| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 927 人关注过本帖
标题:一个关于继承问题
只看楼主 加入收藏
大嘴先生2
Rank: 1
等 级:新手上路
威 望:2
帖 子:815
专家分:0
注 册:2006-4-17
收藏
 问题点数:0 回复次数:17 
一个关于继承问题
请教各位一个问题:
public class ClassA{
public void f1(){...}
}
public class ClassB extends ClassA{
public void f1(){...}//改写基类f1
}
public class MainClass{
main(){
ClassA a1=new ClassB();
a1.f1();//之后怎么调用基类的方法f1()呢?
}
}
搜索更多相关主题的帖子: 继承 
2007-04-03 09:14
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
这就是动态绑定啊

当调用一个对象的方法的时候,它调用的是实际这个对象的方法

你想调用基类的方法f1,有两种方法

1,直接ClassA a1=new ClassA();

2,在ClassB重写f1的时候,先调用一下super.f1();这样你每次调用子类的f1的时候,它也调用了父类的f1;


可惜不是你,陪我到最后
2007-04-03 09:19
支离破碎
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:737
专家分:0
注 册:2007-1-4
收藏
得分:0 

调不成了,你只在你的子类的f1方法中用super.f1()去调用基类的方法。


人生漂泊無依,有如浮萍菱花,隨水飄流,你会在我这里停留吗?
[url=http://51mynet.]http://51mynet.[/url]
2007-04-03 09:22
大嘴先生2
Rank: 1
等 级:新手上路
威 望:2
帖 子:815
专家分:0
注 册:2006-4-17
收藏
得分:0 
那super(a).f1()可以吗?!

骑白马的未必是王子,也可能是唐僧;有翅膀的未必是天使,也可能是鸟人。
2007-04-03 09:26
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
JAVA里面不能这样做,你再强制转换,a指向的对象,依然是子类

可惜不是你,陪我到最后
2007-04-03 09:27
大嘴先生2
Rank: 1
等 级:新手上路
威 望:2
帖 子:815
专家分:0
注 册:2006-4-17
收藏
得分:0 
那如果非得怎么用
有什么办法呢?!

骑白马的未必是王子,也可能是唐僧;有翅膀的未必是天使,也可能是鸟人。
2007-04-03 09:28
大嘴先生2
Rank: 1
等 级:新手上路
威 望:2
帖 子:815
专家分:0
注 册:2006-4-17
收藏
得分:0 
就是说B类是不能改动的
而且声明对象的时候也不允许改动
只是调用改动呢!?

骑白马的未必是王子,也可能是唐僧;有翅膀的未必是天使,也可能是鸟人。
2007-04-03 09:29
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

如果非得这么用,那你就生成一个父类的对象吧,或者你把这个方法声明为static的,这个子类就重写不了了

比如

[CODE]class A{
public static void doSth(){
System.out.println("A.doSth");
}
}
class B extends A{
public static void doSth(){
System.out.println("B.doSth");
}
}
public class Test{
public static void main(String[] args){
A a=new B();
a.doSth();
((B)a).doSth();
}
}[/CODE]


可惜不是你,陪我到最后
2007-04-03 09:32
大嘴先生2
Rank: 1
等 级:新手上路
威 望:2
帖 子:815
专家分:0
注 册:2006-4-17
收藏
得分:0 
重写不了方法的话
那么B类不就失去意义了吗?!

骑白马的未必是王子,也可能是唐僧;有翅膀的未必是天使,也可能是鸟人。
2007-04-03 09:36
大嘴先生2
Rank: 1
等 级:新手上路
威 望:2
帖 子:815
专家分:0
注 册:2006-4-17
收藏
得分:0 
((B)a).doSth();
是什么意思?!
不太明白
请教斑竹

骑白马的未必是王子,也可能是唐僧;有翅膀的未必是天使,也可能是鸟人。
2007-04-03 09:43
快速回复:一个关于继承问题
数据加载中...
 
   



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

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