1.super关键字的用法有三种:
1.在子类的成员变量中,访问父类的成员变量。
2.在子类成员方法中访问父类的成员方法。
3.在子类的构造方法中,访问父类的构造方法。
package Java继承06;
/**
* @Author: Jason
* @Date: 2019/7/20 20:36
* @Version 1.0
*/
public class Fu {
int num =10;
public void method(){
System.out.println("父类方法!");
}
}
package Java继承06;
/**
* @Author: Jason
* @Date: 2019/7/20 20:36
* @Version 1.0
*/
/*
super关键字的用法有三种:
1.在子类的成员变量中,访问父类的成员变量。
2.在子类成员方法中访问父类的成员方法。
3.在子类的构造方法中,访问父类的构造方法。
*/
public class Zi extends Fu {
int num = 20;
// 3.在子类的构造方法中,访问父类的构造方法。
public Zi(){
super();
}
// 1.在子类的成员变量中,访问父类的成员变量。
public void methodZi(){
System.out.println(super.num); //在父类中的num
}
// 2.在子类成员方法中访问父类的成员方法。
public void method(){
super.method(); //访问父类当中的method
System.out.println("子类方法!");
}
}
2.super关键字用来访问父类的内容,而this关键字用来访问本类内容。
用法三种:
1.在本类的成员方法中,访问本类的成员变量。
2.在本类的成员方法中,访问本类的另一个成员方法。
3.在本类的构造方法中,访问本类的另一个构造方法。
第三种中用法当中要注意:
A. this(...) 调用也必须是构造方法的第一个语句,唯一一个。
B. super和this两种构造调用,不能同时使用
/**
* @Author: Jason
* @Date: 2019/7/20 20:47
* @Version 1.0
*/
public class Fu {
int num = 30;
public Fu(){
System.out.println("111111111");
}
}
public class Zi extends Fu{
int num = 10; //本类的成员变量
// 1.在本类的成员方法中,访问本类的成员变量。
public void showNum(){
int num = 20;
System.out.println(num); //局部变量
System.out.println(this.num); //本类的成员变量
System.out.println(super.num); //父类当中的成员变量
}
// 2.在本类的成员方法中,访问本类的另一个成员方法。
public void methodA(){
System.out.println("AAA");
}
public void methodB(){
// methodA();
this.methodA(); //可以直接调用,也可以用this.methodA(); this做强调 本类成员方法
System.out.println("BBB");
}
// 3.在本类的构造方法中,访问本类的另一个构造方法。
// this(...) 调用也必须是构造方法的第一个语句,唯一一个。
public Zi(){
// super(); //这一行 super 不再赠送
this(10); //本类的无参构造,调用本类的有参构造
// this(10,20); 错误写法!
}
public Zi(int n){
this(10,20);
}
public Zi(int n,int m){
System.out.println("0");
//没有的时候 默认 super();赠送
}
}
package java继承07;
/**
* @Author: Jason
* @Date: 2019/7/20 21:28
* @Version 1.0
*/
public class DemoThis {
public static void main(String[] args) {
Zi zi = new Zi();
}
}