类与对象(四)构造方法、对象初始化过程、类变量和实例变量

构造方法

什么是构造方法

在创建对象的时候,对象成员可以由构造函数方法进行初始化。

构造方法负责初始化类中的实例变量。

构造方法是一种特殊的方法,这种方法必须满足以下语法规则:构造方法必须与类名相同;不包含返回值类型描述部分。

构造方法不能有static和final关键字修饰。

为什么使用构造方法

在调用类的属性时,经常遇见有许多的属性的类,比如:

public class Teacher {
	
	int age; // 年龄
	String name; // 姓名
	String position; // 职位
	String education; // 学历
}

在调用的时候比较麻烦

public class Test {
	
	public static void main(String[] args) {
		Teacher teacher = new Teacher();
		teacher.name = "李雯";
		teacher.age = 36;
		teacher.education = "博士";
		System.out.println(teacher.introduction());
	}
}

Teacher类中有太多的属性,每次给属性赋值时非常麻烦:编码量大,无法重用给属性赋值的代码,这时候我们就要用到了构造方法。

如何使用构造方法

使用new关键字调用构造方法,即构造方法在创建对象(也称对象实例化)时被调用。

public class  TeacherTest {
    public static void main(String[ ] args) {
	Teacher  teacher = new Teacher(); //创建Teacher对象
    }
}

由于Teacher类没有显式构造方法,这时Teacher类就会有一个默认的无参构造方法。

显示构造方法:在创建类时,如果没有创建显示构造方法,类中则有一个默认无参构造方法。而且可以在类中声明多个构造方法,每个方法在参数类型或数目有所不同。

如果定义好了显示构造方法,则默认无参构造方法则不存在,除非定义显示无参构造方法。

类中可以有多个构造方法,构造方法之间可以通过this实现调用,但必须将调用构造函数代码写在有效代码的第一行:

public class  TeacherTest {
    public TecherTest(){
        this.name=name;      
    }
    public TecherTest(){
        this(name);
        this.age=age;
    }
}

普通方法不能使用this调用类的方法。
 

public class  TeacherTest {
    public TecherTest(){
        this.name=name;      
    }
    public void Test(){
        this(name);//出错
    }
}

this代表对当前对象的一个引用。

public class Student {

	String name; //学生姓名

	public void doHomework() {
		System.out.println(this.name + “正在写作业……");
	}
}

 

this在实例方法中通常被省略,除非实例方法中包含与成员变量同名的局部变量时,访问成员变量需要使用this。

 

this关键字调用属性、方法和本类中的构造方法。

public class Student {

	int age;
	String name;

	public Student(int age) {
		this.age = age;
	}
	public Student(String name) {
		this.name = name;
	}
	public Student(int age, String name) {
		this(age);
		new Student(name);
	}
	public static void main(String[] args) {
		new Student(12, "王五");
	}
}

此程序调用第三个构造方法,根据参数列表调用。

对象初始化过程

用new创建并初始化对象步骤:

1、给对象的实例变量(非“常量”)分配内存空间,默认初始化成员变量;

2、成员变量声明时的初始化

3、初始化块初始化(又称为构造代码块或非静态代码块);

4、构造方法初始化

对象初始化过程:

给对象的实例变量分配空间,默认初始化成员变量

成员变量声明时的初始化

初始化块初始化

参构造方法初始化

类变量和实例变量:

类变量也叫静态变量,也就是在变量前加了static 的变量。

实例变量,就是说没有static修饰的成员变量,这些变量的使用需要先在内存中new出来才能使用。

区别:

类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值