这里有新鲜出炉的 Java 并发编程示例,程序狗速度看过来!
Java 程序设计语言
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称.
下面小编就为大家带来一篇 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 成员变量的隐藏 (实例讲解) 就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持 PHPERZ.
来源: http://www.phperz.com/article/18/0118/353404.html