黑马程序员技术交流社区
标题:
关于继承还有多态的小问题
[打印本页]
作者:
FFF
时间:
2013-9-26 22:36
标题:
关于继承还有多态的小问题
本帖最后由 FFF 于 2013-9-26 23:15 编辑
class tempDemo
{
public void com()
{
System.out.println("YES");
}
}
class tempDemoToo extends tempDemo//继承
{
public void com()
{
System.out.println("No");
}
}
public class Temp09_26 {
public static void main(String[] args)
{
tempDemo t = new tempDemoToo();//多态
t.com();//调用方法
}
}
复制代码
打印出来的是Yes;
我想要在有继承与多态的情况下,t.com()输出No,代码需要怎么改?
新人,请多多指教!
作者:
咕咕猫
时间:
2013-9-26 22:45
你的这个现在打印的就是no,因为子类会复写掉父类的com方法。你是应该想这样写的吧
class tempDemo
{
public void com()
{
System.out.println("YES");
}
}
class tempDemoToo extends tempDemo
{
public void com_1()//子类特有方法
{
System.out.println("No");
}
}
public class Temp
{
public static void main(String[] args)
{
tempDemo t = new tempDemoToo();//父类型创建子对象
tempDemoToo d=(tempDemoToo)t;//向下转型才能调用子类特有方法
p.com_1();
}
}
作者:
暮雨
时间:
2013-9-26 23:15
class tempDemo
{
public void com()
{
System.out.println("YES");
}
}
class tempDemoToo extends tempDemo
{
public void com()
{
System.out.println("No");
}
}
public class Test1 {
public static void main(String[] args)
{
tempDemo t = new tempDemoToo();
t.com();
}
}
复制代码
运行了一下,结果输出为No,符合预期。多态实现三个要素
1.有继承 2.有方法的重写 3.父类引用指向子类对象
你的程序满足多态的条件。
在tempDemoToo 中重写了父类中的com()方法,在使用引用时,父类的引用是指向子类对象的,故在调用的时候调用的是重写后的子类的com()方法。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2