个人理解,Java中静态、实例变量和方法都是可以继承的;只有实例方法可以重写;实例变量、静态变量和静态方法可以被隐藏。
public class A{
String s1 = "A s1";
static String s2 = "A s2";
public void say1(){
System.out.println("A say");
}
public static void say2(){
System.out.println("A static say");
}
}
public class B extends A{
String s1 = "B s1";
static String s2 = "B s2";
public void say1(){
System.out.println("B say");
}
public static void say2(){
System.out.println("B static say);
}
}
public class C extends A{
}
public static void main(String[] args){
A a = new A();
A ab = new B();
B b = new B();
C c = new C();
}
输出结果:
a.s1 = “A s1”;
a.s2 = “A s2”;
a.say1() = “A say”;
a.say2() = “A static say”;
ab.s1 = “A s1”;
ab.s2 = “A s2”;
ab.say1() = “B say”;
ab.say2() = “A static say”;
b.s1 = “B s1”;
b.s2 = “B s1”;
b.say1() = “B say”;
b.say2() = “B static say”;
c.s1 = “A s1”;
c.s2 = “A s2”;
c.say1() = “A say”;
c.say2() = “A static say”;