论坛首页 招聘求职论坛

一个有关java继承类上传的问题

浏览 15766 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (6)
作者 正文
   发表时间:2008-05-22  
System.out.println(t3.i); 对域变量直接调用。使用的是Test3类型的t3,调用继承来的i。
System.out.println(t3.f()); 方法的动态绑定 
System.out.println(t3.g());  静态方法调用

这类题目真的比较无聊,不过貌似现在很多公司都喜欢出这样的题。。。。
0 请登录后投票
   发表时间: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类型后,被隐藏的东西又被恢复了,而被覆盖的方法却是一去不复返了(子类的方法在这个实例里面永久替代了原先父类的方法)。这就是区别,也是这个题的考点所在了。
0 请登录后投票
   发表时间:2008-05-22  
钻研可嘉!

不过诺贝尔奖不是钻研这些能得的。

真有人这么写代码,我绝对要打他人,这不是设个陷阱让别人钻嘛。
0 请登录后投票
   发表时间:2008-05-22  
baibai326 写道
钻研可嘉!

不过诺贝尔奖不是钻研这些能得的。

真有人这么写代码,我绝对要打他人,这不是设个陷阱让别人钻嘛。



面试有时候就是这样啊,呵呵,没办法,考察对OO和Java语言的熟悉程度
0 请登录后投票
   发表时间: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()
0 请登录后投票
   发表时间:2008-05-22  
freej 写道
baibai326 写道
钻研可嘉!

不过诺贝尔奖不是钻研这些能得的。

真有人这么写代码,我绝对要打他人,这不是设个陷阱让别人钻嘛。



面试有时候就是这样啊,呵呵,没办法,考察对OO和Java语言的熟悉程度


我觉得这个面试题目没有那点体现出了oo和java的特性了
除了虐待一顿面试的人外我真找不到什么作用
0 请登录后投票
   发表时间:2008-05-22  
foy 写道
freej 写道
baibai326 写道
钻研可嘉!

不过诺贝尔奖不是钻研这些能得的。

真有人这么写代码,我绝对要打他人,这不是设个陷阱让别人钻嘛。



面试有时候就是这样啊,呵呵,没办法,考察对OO和Java语言的熟悉程度


我觉得这个面试题目没有那点体现出了oo和java的特性了
除了虐待一顿面试的人外我真找不到什么作用


你不会真的没看出来吧?晕,考的是基础。
0 请登录后投票
   发表时间: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.
0 请登录后投票
   发表时间:2008-05-22  
freej 写道
foy 写道
freej 写道
baibai326 写道
钻研可嘉!

不过诺贝尔奖不是钻研这些能得的。

真有人这么写代码,我绝对要打他人,这不是设个陷阱让别人钻嘛。



面试有时候就是这样啊,呵呵,没办法,考察对OO和Java语言的熟悉程度


我觉得这个面试题目没有那点体现出了oo和java的特性了
除了虐待一顿面试的人外我真找不到什么作用


你不会真的没看出来吧?晕,考的是基础。

我还真没看出来这考的是基础。
0 请登录后投票
   发表时间:2008-05-22  
foy 写道
freej 写道
foy 写道
freej 写道
baibai326 写道
钻研可嘉!

不过诺贝尔奖不是钻研这些能得的。

真有人这么写代码,我绝对要打他人,这不是设个陷阱让别人钻嘛。



面试有时候就是这样啊,呵呵,没办法,考察对OO和Java语言的熟悉程度


我觉得这个面试题目没有那点体现出了oo和java的特性了
除了虐待一顿面试的人外我真找不到什么作用


你不会真的没看出来吧?晕,考的是基础。

我还真没看出来这考的是基础。


那你就好好看看我的第一篇回复吧,说硬话没有用。
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics