A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© FFF 金牌黑马   /  2013-9-26 22:36  /  1150 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 FFF 于 2013-9-26 23:15 编辑
  1. class tempDemo
  2.         {
  3.                 public  void com()
  4.                 {        
  5.                         System.out.println("YES");
  6.                 }
  7.         }
  8. class tempDemoToo extends tempDemo//继承
  9.         {
  10.                 public void com()
  11.                 {
  12.                         System.out.println("No");
  13.                 }
  14.         }
  15. public class Temp09_26 {

  16.         public static void main(String[] args)
  17.         {
  18.                 tempDemo t = new tempDemoToo();//多态
  19.                 t.com();//调用方法
  20.         }
  21. }
复制代码
打印出来的是Yes;
我想要在有继承与多态的情况下,t.com()输出No,代码需要怎么改?
新人,请多多指教!

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 So nice!

查看全部评分

3 个回复

正序浏览
  1.     class tempDemo
  2.             {
  3.                     public  void com()
  4.                     {      
  5.                             System.out.println("YES");
  6.                     }
  7.             }
  8.     class tempDemoToo extends tempDemo
  9.             {
  10.                     public void com()
  11.                     {
  12.                             System.out.println("No");
  13.                     }
  14.             }
  15.     public class Test1 {

  16.             public static void main(String[] args)
  17.             {
  18.                     tempDemo t = new tempDemoToo();
  19.                     t.com();
  20.             }
  21.     }
复制代码
运行了一下,结果输出为No,符合预期。多态实现三个要素
1.有继承 2.有方法的重写 3.父类引用指向子类对象
你的程序满足多态的条件。
在tempDemoToo 中重写了父类中的com()方法,在使用引用时,父类的引用是指向子类对象的,故在调用的时候调用的是重写后的子类的com()方法。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 很给力!

查看全部评分

回复 使用道具 举报
你的这个现在打印的就是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();

        }

}

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 有心啦!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马