diff --git a/day09/src/com/inmind/extends_constructor04/Demo05.java b/day09/src/com/inmind/extends_constructor04/Demo05.java index db01ca4..205ea9d 100644 --- a/day09/src/com/inmind/extends_constructor04/Demo05.java +++ b/day09/src/com/inmind/extends_constructor04/Demo05.java @@ -13,6 +13,10 @@ public class Demo05 { Fu fu = new Fu(10); System.out.println("--------------------------------"); zi.methodZi(); + System.out.println("--------------------------------"); + zi.method1(10); + System.out.println("--------------------------------"); + zi.method2(); System.out.println("程序结束"); } diff --git a/day09/src/com/inmind/extends_constructor04/Zi.java b/day09/src/com/inmind/extends_constructor04/Zi.java index 8f62ac4..fdb0293 100644 --- a/day09/src/com/inmind/extends_constructor04/Zi.java +++ b/day09/src/com/inmind/extends_constructor04/Zi.java @@ -7,15 +7,46 @@ super三个使用操作: 1.super,可以在子类的成员方法中,访问父类的成员变量,格式super.父类成员变量 2.super,可以在子类的成员方法中,访问父类的成员方法,格式:super.父类成员方法名(参数列表) 3.super,可以在子类的构造方法中,访问父类的构造方法,格式:super(参数列表) +------------------------------------------------------------------- +谁调用成员方法,方法中的this就是谁(对象) +this表示本类,super表示父类 + +this关键字使用方式 +1.this,可以区分当前类中局部变量和成员变量 +2.this,可以在本类的成员方法中,调用该类的其他的成员方法(其实在一个类中所有的成员变量和成员方法的调用之前都有this.) +3.this,可以在本类的构造方法中,调用其他的重载构造方法,格式为 this(参数列表) + + 关于第三点的注意事项: + a.this必须在第一行,不能调用自己构造方法(自己不能调用自己) + b.this和super在调用构造方法时,都必须在第一行,所以在一个构造方法中不能同时出现 + c.this可以调用其他的重载构造方法,但是不能互相调用(死循环) */ public class Zi extends Fu{//子类继承了父类,拥有了父类的非私有的成员 + int num = 50; + int num1; + //无参构造方法 public Zi(){ //super(10);//注意:如果不写该行代码,编译器会自动添加super(),调用父类的无参构造,并且必须在第一行 - super(); - System.out.println("子类的无参构造方法"); + this(0); } + //有参构造方法 + public Zi(int num){ + this(num, 0); + } + public Zi(int num,int num1){ + this.num = num; + this.num1 = num1; + System.out.println("子类的有参参构造方法"); + + System.out.println("初始化操作1"); + System.out.println("初始化操作2"); + System.out.println("初始化操作3"); + System.out.println("初始化操作4"); + System.out.println("初始化操作5"); + } + //子类的成员方法 public void methodZi(){ @@ -23,4 +54,19 @@ public class Zi extends Fu{//子类继承了父类,拥有了父类的非私有 //调用父类的成员方法 super.methodFu(); } + + + //子类的成员方法 + public void method1(int num){//形参也是一个局部变量 + //区分本类的同名的num + System.out.println(num);//局部变量 + System.out.println(this.num);//本类的成员变量 + System.out.println(super.num);//父类的成员变量 + } + + public void method2(){ + //调用本类的成员方法 + method1(10); + this.method1(10); + } }