| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 605 人关注过本帖
标题:[求助]刚学java问一个关于继承的问题
只看楼主 加入收藏
hello_world1
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-8-12
收藏
 问题点数:0 回复次数:6 
[求助]刚学java问一个关于继承的问题

class Test {
public Test() {
}

public void show() {
System.out.println("Test.show()");
}

public void Display() {
System.out.println("Test.Display()");
}
}


public class myclass extends Test {
public myclass() {
}

public void show() {
System.out.println("myclass.show()");
}

public void sum() {
System.out.println("myclass.sum()");
}

public static void main(String[] args) {
Test t = new myclass();
t.show();
}
}
为什么t不能调用sum方法,t不是引用的myclass吗

搜索更多相关主题的帖子: java 继承 
2007-08-12 05:19
huwangvs
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:764
专家分:0
注 册:2007-2-4
收藏
得分:0 
2007-08-12 09:07
hello_world1
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-8-12
收藏
得分:0 

我想问的是Test t = new myclass();虽然声明为Test类型,但它实际类型是myclass啊,当调用show方法由于动态绑定,虚拟机都知道t实际引用的对象类型,从而正确调用myclass的show方法,那为什么在我调用sum方法时就不能调用了呢?希望哪位能指点清楚


2007-08-12 15:34
huwangvs
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:764
专家分:0
注 册:2007-2-4
收藏
得分:0 

你的sum方法是子类自己的,父类是不能访问子类自己的方法的。

如果想访问子类自己的方法,必须要将父类强制转化位子类。

你所说的动态绑定,那是实现多态的

2007-08-12 16:34
guoxhvip
Rank: 8Rank: 8
来 自:聖西羅南看臺
等 级:贵宾
威 望:44
帖 子:4052
专家分:135
注 册:2006-10-8
收藏
得分:0 
这样声明 t仍然被编译器看成Test对象 而sum方法是myclass的 所以父类对象不可能调用子类方法 首先编译都不能通过 而LZ肯定又想问那么为什么当调用show方法的时候能调用子类的show方法 那才是因为动态绑定 它是在程序运行时虚拟机根据对象变量的实际类型自己决定调用哪个show方法 而编译器只知道你的t是Test类型 它也不知道你t实际类型是什么

[此贴子已经被作者于2007-8-12 23:58:24编辑过]



愛生活 && 愛編程
2007-08-12 18:13
hello_world1
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-8-12
收藏
得分:0 
谢谢楼上2位 听了你们的话我好象明白一点了 自己在琢磨一下

2007-08-12 18:19
大嘴先生2
Rank: 1
等 级:新手上路
威 望:2
帖 子:815
专家分:0
注 册:2006-4-17
收藏
得分:0 
以下是引用huwangvs在2007-8-12 16:34:43的发言:

你的sum方法是子类自己的,父类是不能访问子类自己的方法的。

如果想访问子类自己的方法,必须要将父类强制转化位子类。

你所说的动态绑定,那是实现多态的

支持


骑白马的未必是王子,也可能是唐僧;有翅膀的未必是天使,也可能是鸟人。
2007-08-12 18:38
快速回复:[求助]刚学java问一个关于继承的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039692 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved