静态属性、静态方法和非静态的属性都可以被 继承 和 隐藏 而不能够被重写,因此不能实现多态,不能实现父类的引用可以指向不同子类的对象。 非静态的方法可以被继承和重写,因此可以实现多态。 ##接口中的实现和类中的继承是两个不同的概念,因此不可以说实现接口的子类从接口那里继承了常量和方法 例证如下: package com.etc; public class A//父类 { public static String str = "静态属性"; public String name = "非静态属性"; public static void sing() { System.out.println("静态方法"); } public void run() { System.out.println("非静态方法"); } } package com.etc; public class B extends A //子类B { public static String str = "B该改写后的静态属性"; public String name ="B改写后的非静态属性"; public static void sing() { System.out.println("B改写后的静态方法"); } } package com.etc; public class C extends A //子类C继承A中的所有属性和方法 { } package com.etc; public class Test//测试类 { public static void main(String[] args) { C c = new C(); System.out.println(c.name); System.out.println(c.str); c.sing();//输出的结果都是父类中的非静态属性、静态属性和静态方法,推出静态属性和静态方法可以被继承 A c1 = new C(); System.out.println(c1.name); System.out.println(c1.str); c1.sing();//结果同上,输出的结果都是父类中的非静态属性、静态属性和静态方法,推出静态属性和静态方法可以被继承 B b = new B(); System.out.println(b.name); System.out.println(b.str); b.sing();//结果都是子类的非静态属性,静态属性和静态方法,这里和非静态属性和非静态类的继承相同 A b1 = new B(); System.out.println(b1.str);//结果是父类的静态属性,说明静态属性不可以被重写,不能实现多态 System.out.println(b1.name);//结果是父类的非静态属性,说明非静态属性不可以被重写,不能实现多态 b1.sing();//结果都是父类的静态方法,说明静态方法不可以被重写,不能实现多态 } }