|
精华帖 (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的特性了 除了虐待一顿面试的人外我真找不到什么作用 你不会真的没看出来吧?晕,考的是基础。 我还真没看出来这考的是基础。 那你就好好看看我的第一篇回复吧,说硬话没有用。 |
|
| 返回顶楼 | |





