首页 新闻 会员 周边 捐助

类的继承问题

0
悬赏园豆:10 [已解决问题] 解决于 2013-11-05 17:13

public class Animal1 {
public void p1(){
System.out.println("我是父类方法");
}

public static void main(String[] args){
Animal1 a=new shizi();//问题,这个语句执行后,为什么不能调用子类shizi的p方法,只能调用父类animal的p1方法,我看书上说子类shizi应该是继承了p1方法,并且调用方法时候是根据运行时类型决定的
//shizi a=new shizi();
//System.out.println(a.a);




}

}

 

 

 

class shizi extends Animal1{
public String a="123";
public void p(){
System.out.println("我是子类方法");

}

}

问题:

 

菩提下的木树的主页 菩提下的木树 | 初学一级 | 园豆:84
提问于:2013-10-24 20:23
< >
分享
最佳答案
0

你使用了父类的引用,就会失去子类的属性,还有你那个p,根本就不是继承,名字都不一样,如果名字一样,是继承的方法,调用时,其实是执行了子类的方法。这就是多态性,子类不同,执行的内容也不相同。

收获园豆:10
angelshelter | 大侠五级 |园豆:9914 | 2013-10-24 21:14

默默点个攒

朝曦 | 园豆:1073 (小虾三级) | 2013-10-24 22:01

@朝曦: 再加一个赞~

幻天芒 | 园豆:37207 (高人七级) | 2013-10-24 23:51
其他回答(3)
0

因为Animal1 a=new shizi();       a的类型是Animal1 

悟行 | 园豆:12559 (专家六级) | 2013-10-24 20:29
0

Animal1 a=new shizi();

((shizi)a).p()

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2013-10-25 13:19
0

java里可以这么搞呀  如果是C#那new的时候就应该需要强转了 

Moulton | 园豆:206 (菜鸟二级) | 2013-10-25 16:15

C#也可以这么搞,C#的语法明显比Java先进很多。这就是一个简单的隐式类型转换而已。

支持(0) 反对(0) 林J | 园豆:202 (菜鸟二级) | 2013-10-30 16:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册