这篇文章给大家介绍Java中怎么对成员的变量进行隐藏,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
一、如果子类与父类中有一个相同名称的成员变量,那么子类的成员变量会不会覆盖父类的成员变量?我们看下在的例子:
public class A { public int x=10; } public class B extends A { public int x=20; } public class C { public static void main(String[] args) { A a=new B(); System.out.println(a.x); //1 B b=new B(); System.out.println(b.x); //2 System.out.println(((A)b).x); //3 } }
运行C类的main方法的结果为:
10
20
10
通过结果我们可以看出子类是不会覆盖父类的成员变量,我们eclipse的调试工具也能很清晰的看出在对像a中同时存在两个x的成员变量(其中一个是父类的),如下图示:
通过第1个和第3个的结果,可以得出对像对于成员的直接访问是静态邦定的 ,官方解释如下:
在一个类中,子类中的成员变量如果和父类中的成员变量同名,那么即使他们类型不一样,只要名字一样。父类中的成员变量都会被隐藏。
在子类中,父类的成员变量不能被简单的用引用来访问。而是,必须从父类的引用获得父类被隐藏的成员变量,一般来说,我们不推荐隐藏成员变量,
因为这样会使代码变得难以阅读。
对于静态方法与成员变量类似,如下:
public class A { public static void print() { System.out.println("A Static "); } } public class B extends A { public static void print() { System.out.println("B Static "); } } public class C { public static void main(String[] args) { A a=new B(); a.print(); B b=new B(); b.print(); ((A)b).print(); } }
结果如下:
A Static
B Static
A Static
关于Java中怎么对成员的变量进行隐藏就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。