对象-一论

创建与初始化对象

在程序里,使用new关键字创建类的对象,格式:classType className = new classType()。在使用new的同时,也在内存中为该对象分配了空间,及对对象进行了默认的初始化和对类中构造器的调用

classType className = new classType()步骤解析

  1. 为对象分配内存空间,将对象的实例变量自动初始化默认值为0/false/null (实例变量的隐式赋值)
  2. 如果代码中实例变量有显式赋值,那么就将之前的默认值覆盖掉
  3. 调用构造器
  4. 把对象内存地址值赋值给变量(=号赋值操作)

1. 构造器

在进行创建对象的时候必须要调用构造器,也称为构造方法。

构造器的名字必须与类名相同,没有返回类型,也不能写void

1.1作用

  1. 在使用new创建对象的时候是要使用类的构造器

  2. 构造器中的代码执行后,可以给对象中的属性初始化赋值

    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;
    }
}

上一篇:反射获取类对象


下一篇:Java基础——Set接口