1.this关键字
- this表示这个对象的参考名称;例如this.age1=age2;表示将age2的值,赋值给这个对象的私有属性age1.
2. .重温面向对象的思想——构造器和重载
- 构造器:创建一个对象时,有时候需要对在实例化一个对象时,对这个对象进行初始化,这个时候我们就需要构造方法来进行这种初始化。
- 重载:当这种初始化需要按照不同的语境,不同的参数的构造器来进行初始化。
-
总结——方法的重载是多种构造器,用以完成不同的初始化。
-注意:构造器==构造方法,两者一样
3.构造方法和自定义方法名注意事项
需要注意的是,自定义的方法和构造器的名字一样时,编译是能够通过的,但是不符合编程规范,例如
package demo;
public class Store {
private String goodsClass;
private double price;
// 这个是第一个构造方法
public Store() {
this.goodsClass = "今天商店关门了";
System.out.println(this.goodsClass);
}
// 这个是第二个构造方法,改变A商品的价格,前两者就叫做重载
public Store(String goodsClass, double price) {
this.goodsClass = goodsClass;
this.price = 2.0 * price;
}
// 这个是自定义的方法,不是构造器
// 虽然自定义的方法和构造器重名了,但编译能够通过,编程规范不建议这样写
public void Store() {
System.out.println("第二个Store" + this.goodsClass + this.price + "元");
}
public static void main(String[] args) {
Store st1 = new Store("香蕉", 3);// 构造方法构*法1
st1.Store();// 对象的自定义Store方法
Store st2 = new Store();// 构造方法2
}
}
结果:
第二个Store香蕉6.0元
今天商店关门了
4. 构造方法之间的引用
- 在一个构造方法中引用另一个构造方法的条件——当A构造方法中的过程,在B构造方法中能够被复用。例如
package demo;
public class ThisDemo {
private int number;
private String text;
public ThisDemo(int number) {
if (number < 0) {
System.out.println("你输入的数字小于零,不能用");
} else {
this.number = number;
System.out.println("你输入的数字是" + this.number);
}
}
public ThisDemo(int number, String text) {
//调用另一个构造方法来判断
this(number);
this.text = text;
System.out.println("使用this()来调用另一个构造方法");
// 具体调用哪一个构造器示传入的参数的个数,类型决定
}
//测试
public static void main(String[] args) {
ThisDemo demo = new ThisDemo(10, "This关键字");
}
}
结果:
你输入的数字是10
使用this()来调用另一个构造方法