知识点总结 : Java super和this关键字的总结
7.2.4 小总结
其实子类的构造方法中隐含了super()调用,如果子类的构造方法没有写super(),编译器会帮我们默认加上去。子类就变成
public class Zi extends Fu { //子类的无参构造方法
public Zi(){
super(); //注意!这句必须写在第一行的位置,如果父类构造函数有参数,就是super(参数),有 参数的调用,必须要自己写上去,不然会默认调用无参构造 System.out.println(“子类构造方法执行”);
} }
public class Demo07Main { public static void main(String[] args) { Zi zi = new Zi(); zi.methodZi(); } } /*输出结果: 父类的成员方法执行 子类的成员方法执行 */
8. super关键字的2种用法总结
8.1 用法1:在子类的成员方法中,访问父类的成员变量,比如:
8.1.1 父类
public class Fu {
public int num = 10; }
8.1.2 子类
public class Zi extends Fu {
public int num = 20;
public void methodZi(){ // System.out.println(num); 这样打印的一定是本类的num System.out.println(super.num); //打印的是父类的num } }
8.2 用法2
在子类的成员方法中,访问父类的成员方法,比如:
8.2.1 父类
public class Fu { public void methodFu(){ System.out.println(“父类的成员方法执行”); } }
8.2.2 子类
public class Zi extends Fu{ public void methodZi(){ super.methodFu(); //访问父类的methodFu()方法 System.out.println(“子类的成员方法执行”); } }
在main中执行子类的方法
- this关键字的三种用法
9.1 概述
9.1.1 在本类的成员方法中,访问本类的成员变量
9.1.2 在本类的成员方法中,访问本类的另一个成员方法
9.1.3 在本类的构造方法中,访问本类的另一个构造方法
9.2 代码说明一下
public class Zi extends Fu {
private int num = 10;
public Zi(){
this(123); //9.1.3 在本类的无参构造中调用有参构造 }
public Zi(int num){
this.num = num; }
public void methodZi(){
System.out.println(this.num); //9.1.1 在本类的成员方法中,访问本类的成员变量 }
public void methodA(){
System.out.println(“A方法”); }
public void methodB(){
this.methodA(); //9.1.2 在本类的成员方法中,访问本类的另一个成员方法 System.out.println(“B方法”)
}
9.3 注意事项
- 在构造方法中调用this,那这个this调用必须是该函数中的第一个语句,也是唯一的一个
- suer和this两种在构造调用中,不能同时使用。两个都要排在第一行,我哪知道该怎么排。