class Father {
public String notStaticVar = "fa_no_static_var";
public static String staticVar = "fa_static_var";
public static void staticFun() {
System.out.println("fa_static_method");
}
public void noStaticFun() {
System.out.println("fa_no_static_method");
}
}
class Son1 extends Father{
public String notStaticVar = "son_no_static_var";
public static String staticVar = "son_static_var";
public static void staticFun() {
System.out.println("son_static_method");
}
public void noStaticFun() {
System.out.println("son_no_static_method");
}
}
class Son2 extends Father{
}
public class Main{
public static void main(String[] args){
// 实验1,说明子类可以继承父亲的普通成员变量、普通成员方法、静态成员变量和静态方法
Son2 son2 = new Son2();
System.out.println(son2.notStaticVar);
System.out.println(son2.staticVar);
son2.noStaticFun();
son2.staticFun();
System.out.println("==========================");
// 实验2和3,说明子类只能覆盖父类的普通方法,即普通成员、静态成员,静态方法要看引用是谁。
Father fa = new Son1();
System.out.println(fa.notStaticVar);
System.out.println(fa.staticVar);
fa.noStaticFun();
fa.staticFun();
System.out.println("==========================");
Son1 son1 = new Son1();
System.out.println(son1.notStaticVar);
System.out.println(son1.staticVar);
son1.noStaticFun();
son1.staticFun();
}
}
// 输出结果:
/*
fa_no_static_var
fa_static_var
fa_no_static_method
fa_static_method
==========================
fa_no_static_var
fa_static_var
son_no_static_method
fa_static_method
==========================
son_no_static_var
son_static_var
son_no_static_method
son_static_method
*/