Java类和对象
本文章是作者学习B站系列视频《狂神说Java》与经典书籍《Java核心技术》的记录笔记与心得,创作不易,希望能够得到您的支持。
Java的构造器
- Java的构造器
在用Java自定义类时,即使类内没有任何内容,也会存在一个方法,这个方法就是Java的构造器
public class Application
{
public static void main(String[] args)
{
Person person = new person();
System.out.println(person.name);
}
}
public class Person()
{
String name;
public Person()
{
this.name="Leon";
}
}
可以看到,在用news关键字实例化一个person对象后,我们通过一个没有返回值的函数(方法)给name赋值并打印出来,这个函数就是Java中的构造器。
构造器的说明:
- 构造器与类同名,在构造一个Person对象时,构造器会自动运行。如果我们没有特别写出构造器并在其中添加语句,构造器也会运行,只是不会产生任何影响。
- 构造器与其他方法的不同在于,构造器必须结合new关键字来调用。如果对象已经存在,就不能调用构造器来重新设置实例字段。
- 构造器没有返回值类型(不用写void)。
- 构造器的本质作用是用来初始化值。
- 构造器可以有很多个,但是每一个构造器的参数必须不同;一旦定义了有参构造,如果仍想使用无参构造器,就必须显式定义一个无参构造器,否则编译器会报错。编译器会根据调用时实际参数列表来判断调用哪一个构造器。
public class Application
{
public static void main(String[] args)
{
Person person1 = new person();
Person person2 = new person("ZHA")
System.out.println(person1.name);
System.out.println(person2.name)
}
}
public class Person()
{
String name;
public Person()
{
this.name="Leon";
}
public Person(String name)
{
this.name=name;
}
}
封装
程序设计的追求:高内聚(类的内部数据操作细节自己完成),低耦合(暴露少量的方法给外部使用)
public class Student{
private String name;
private int age;
public String getName()
{
return this.name;
}
public void setName(String name)
{
this.name=name;
}
public int getAge()
{
return this.age;
}
public void setAge(int age)
{
if(age>120||age<0>)
{
this.age=3;
}
else
{
this.age=age;
}
}
}
public class Application{
Student s1=new Student();
s1.setName("Leon");
System.out.println(s1.getName());
s1.setAge(30);
System.out.println(s1.getAge());
s1.setAge(130);
System.out.println(s1.getAge());
}
封装的解释:
-
如上所示,getName,getAge方法只返回实例字段的值,因此又被称为字段访问器
-
age是一个只读字段,如果在构造器中设置,就没有任何办法对它进行修改,确保age字段不会受到外界的破坏
-
如果想要访问实例字段的值,需要一个私有(private)的数据,一个公共(public)的字段访问器方法(get…)和一个公共的字段更改器方法(set…)
-
更改器可以进行错误检查,如上代码对age进行检查,如果age>120或age<0,那么age就是一个不合法的数据,系统会自动返回age=3
-
用final关键字定义字段,那么这个字段的值将不可以被修改,即更改器(set…)将不起作用.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)