对象-一论
创建与初始化对象
在程序里,使用new
关键字创建类的对象,格式:classType className = new classType()
。在使用new的同时,也在内存中为该对象分配了空间,及对对象进行了默认的初始化和对类中构造器的调用
对classType className = new classType()
步骤解析
- 为对象分配内存空间,将对象的实例变量自动初始化默认值为0/false/null (实例变量的隐式赋值)
- 如果代码中实例变量有显式赋值,那么就将之前的默认值覆盖掉
- 调用构造器
- 把对象内存地址值赋值给变量(=号赋值操作)
1. 构造器
在进行创建对象的时候必须要调用构造器,也称为构造方法。
构造器的名字必须与类名相同,没有返回类型,也不能写void
1.1作用
-
在使用new创建对象的时候是要使用类的构造器
-
构造器中的代码执行后,可以给对象中的属性初始化赋值
public class Student(){ String name; int age; //无参构造器,也是默认构造器 public Student(){ this.name = null; this.age = 0; } //有参构造器 public Student(String name, int age){ this.name = name; this.age = age; } }
如果我们没有手动编写构造器,那在编译器就会自动帮我们添加一个无参的构造器。在日常开发中还会定义有参构造器,方便在创建对象时给属性赋值。无参构造和有参构造可以同时存在,这属于构造器重载
构造器的修饰符可以定义为禁止对象被外部创建,只要把public
改为private
这样就不能在外部通过new来创建这个对象了
2.this关键字
2.1在类中的作用
public class Student{
private String name;
public void setName(String name){
this.name = name;
}
public void print(){
this.setName("Tom");
}
}
在同一个类中,存在全局变量与局部变量使用同一标识符,那在类中调用该标识符会存在就近原则,如果调用的标识符靠近局部变量,那该标识符代表的就是局部变量,否则反之。想在靠近局部变量时调用全局变量的标识符可以用this
,在这里this
代表目前类的对象。this
也可以用来调用本类的其他方法
2.2在类中的意义
this
是代表所在类的对象,this()
表示调用当前类构造器的代码,不会产生新的对象。但会产生递归
public class Student{
String name;
//默认构造器
public Student() {
this();//这样属于递归构造函数调用
}
//有参构造器
public Student(String name) {
this.name = name;
}
}