锁定老帖子 主题:一个有关java继承类上传的问题
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (6)
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-22
System.out.println(t3.i); 对域变量直接调用。使用的是Test3类型的t3,调用继承来的i。
System.out.println(t3.f()); 方法的动态绑定 System.out.println(t3.g()); 静态方法调用 这类题目真的比较无聊,不过貌似现在很多公司都喜欢出这样的题。。。。 |
|
返回顶楼 | |
发表时间:2008-05-22
整理了下代码,这样看的会更清楚了。如下;
class Parent { int i = 1; String j = "Parent J"; StringBuffer k = new StringBuffer("Parent:"); public String getJ() { return j; } public int getI() { return i; } public void printBuffer() { k.append("Parent Buffer;"); System.out.println(k); } static String getClassName() { return "Parent"; } } class Child extends Parent { int i = 2; String j = "Child J"; StringBuffer k = new StringBuffer("Child:"); public String getJ() { return j; } public int getI() { return -i; } public void printBuffer() { k.append("Child Buffer;"); System.out.println(k); } static String getClassName() { return "Child"; } } public class ExtendDemo { public static void main(String[] args) { Child child = new Child(); System.out.println("Child type test:"); System.out.println("child.i:" + child.i); System.out.println("child.getI():" + child.getI()); System.out.println("child.j:" + child.j); System.out.println("child.getJ():" + child.getJ()); child.printBuffer(); System.out.println("child.getClassName():" + child.getClassName()); System.out.println(); Parent parent = child; System.out.println("Parent type test:"); System.out.println("parent.i:" + parent.i); System.out.println("parent.getI():" + parent.getI()); System.out.println("parent.j:" + parent.j); System.out.println("parent.getJ():" + parent.getJ()); parent.printBuffer(); System.out.println("parent.getClassName():" + parent.getClassName()); } } 运行结果如下: Child type test: child.i:2 child.getI():-2 child.j:Child J child.getJ():Child J Child:Child Buffer; child.getClassName():Child Parent type test: parent.i:1 parent.getI():-2 parent.j:Parent J parent.getJ():Child J Child:Child Buffer;Child Buffer; parent.getClassName():Parent Child继承Parent,子类的变量和静态方法分别隐藏父类的变量和静态方法,子类的实例方法覆盖父类的实例方法。隐藏只是把父类的东东藏起来,但是其还是实质存在的;而覆盖就是把父类的东东完全抹掉以替换成子类的,是不可恢复的。在child被强制转换成Parent类型后,被隐藏的东西又被恢复了,而被覆盖的方法却是一去不复返了(子类的方法在这个实例里面永久替代了原先父类的方法)。这就是区别,也是这个题的考点所在了。 |
|
返回顶楼 | |
发表时间:2008-05-22
钻研可嘉!
不过诺贝尔奖不是钻研这些能得的。 真有人这么写代码,我绝对要打他人,这不是设个陷阱让别人钻嘛。 |
|
返回顶楼 | |
发表时间:2008-05-22
baibai326 写道 钻研可嘉!
不过诺贝尔奖不是钻研这些能得的。 真有人这么写代码,我绝对要打他人,这不是设个陷阱让别人钻嘛。 面试有时候就是这样啊,呵呵,没办法,考察对OO和Java语言的熟悉程度 |
|
返回顶楼 | |
发表时间:2008-05-22
subclass can not overwrite father class instance variable and static method for example int i = 1; and static String g()
but can overwrite it's value by method for example public int f() |
|
返回顶楼 | |
发表时间:2008-05-22
freej 写道 baibai326 写道 钻研可嘉!
不过诺贝尔奖不是钻研这些能得的。 真有人这么写代码,我绝对要打他人,这不是设个陷阱让别人钻嘛。 面试有时候就是这样啊,呵呵,没办法,考察对OO和Java语言的熟悉程度 我觉得这个面试题目没有那点体现出了oo和java的特性了 除了虐待一顿面试的人外我真找不到什么作用 |
|
返回顶楼 | |
发表时间:2008-05-22
foy 写道 freej 写道 baibai326 写道 钻研可嘉!
不过诺贝尔奖不是钻研这些能得的。 真有人这么写代码,我绝对要打他人,这不是设个陷阱让别人钻嘛。 面试有时候就是这样啊,呵呵,没办法,考察对OO和Java语言的熟悉程度 我觉得这个面试题目没有那点体现出了oo和java的特性了 除了虐待一顿面试的人外我真找不到什么作用 你不会真的没看出来吧?晕,考的是基础。 |
|
返回顶楼 | |
发表时间:2008-05-22
yelaiwei 写道 subclass can not overwrite father class instance variable and static method for example int i = 1; and static String g()
but can overwrite it's value by method for example public int f() should be hide in here,for example int i=1. |
|
返回顶楼 | |
发表时间:2008-05-22
freej 写道 foy 写道 freej 写道 baibai326 写道 钻研可嘉!
不过诺贝尔奖不是钻研这些能得的。 真有人这么写代码,我绝对要打他人,这不是设个陷阱让别人钻嘛。 面试有时候就是这样啊,呵呵,没办法,考察对OO和Java语言的熟悉程度 我觉得这个面试题目没有那点体现出了oo和java的特性了 除了虐待一顿面试的人外我真找不到什么作用 你不会真的没看出来吧?晕,考的是基础。 我还真没看出来这考的是基础。 |
|
返回顶楼 | |
发表时间:2008-05-22
foy 写道 freej 写道 foy 写道 freej 写道 baibai326 写道 钻研可嘉!
不过诺贝尔奖不是钻研这些能得的。 真有人这么写代码,我绝对要打他人,这不是设个陷阱让别人钻嘛。 面试有时候就是这样啊,呵呵,没办法,考察对OO和Java语言的熟悉程度 我觉得这个面试题目没有那点体现出了oo和java的特性了 除了虐待一顿面试的人外我真找不到什么作用 你不会真的没看出来吧?晕,考的是基础。 我还真没看出来这考的是基础。 那你就好好看看我的第一篇回复吧,说硬话没有用。 |
|
返回顶楼 | |