它并没有覆盖任何内容,您只是在当前类范围内隐藏了原始字段。如果将变量与子类型一起使用,您仍然可以访问原始属性。例:
abstract class GenericContainer { public GenericChild child; }abstract class GenericChild { public int prop1=1 ;}class SpecialChild extends GenericChild { public int prop1=2;}class SpecialContainer extends GenericContainer { public SpecialChild child;}public class Main { public static void main( String ... args ) { GenericContainer container = new SpecialContainer(); container.child = new SpecialChild(); System.out.println( container.child.prop1 ); SpecialChild child = (SpecialChild) container.child; System.out.println( child.prop1 ); }}
先打印1,然后打印2。
从
SpecialChild你也可以去使用了一个级别
super:
class SpecialChild extends GenericChild { public int prop1=2; public int getOriginalProp1() { return super.prop1; }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)