abstract class Animal {
  private String name;
  Animal(String name) {this.name = name;}  public void enjoy(){
    System.out.println("叫声......");
  }
 
  public abstract void enjoy();
}abstract class Cat extends Animal {
  private String eyesColor;
  Cat(String n,String c) {super(n); eyesColor = c;}
  
  public void enjoy() {
    System.out.println("猫叫声......");
  }
  
我自己理解成只要能重写 public void enjoy(){
    System.out.println("叫声......");
  }  
他就是了   求指点

解决方案 »

  1.   

    你这是要问啥?没看懂你的标题,父类引用指向子类对象,你是想在子类里面保存一个成员指向父类的引用呢,还是想问虚基类和虚函数的继承实现呢?Ps:楼主你俩类都是虚基类,所以,其实在Cat类里面,根本不用override enjoy函数。你什么都不写都没关系。编译器不会抱错。
      

  2.   

    这么理解吧
    public class Parent
    {
    public void printName()
    {
    System.out.println("parent");
    }


    }public class Son extends Parent
    {
    @Override
    public void printName()
    {
    System.out.println("son");
    }
    }
    public class Test
    {
    public static void main(String[] args)
    {
    Parent parent = new Son();
    parent.printName();                //这时候 print 的结果是 "son";
                    //虽然是用父类引用,但是方法是指向子类的方向
    }
    }
      

  3.   

    父类 父类对象 = new 子类();
    因为子类是父类的一个类型
      

  4.   

    多态的体现!就如你的例子,动物分为好多阿猫阿狗了等等,阿猫阿狗就是动物的两种形态,但是你不能说动物是阿猫阿狗的体现吧?这就是父类的引用指向子类的对象。
    父类  父类的引用=new 子类();
      

  5.   

    如果没错的话,他表达的意思是:
    List<String> list = new ArrayList<>();
    类似于这行代码的意思,父类的引用  其实 就是指向子类的对象或者子类的实例的。也就是多态的用法,
    用抽象类来指向具体的实现,实现变了,抽象定义可以不变,给程序带来良好的扩展性。
      

  6.   

    LZ所问的是多态问题,多态:可以理解为事物存在的多种体现形态。人:男人,女人动物:猫,狗。猫 x = new 猫();动物 x = new 猫();1,多态的体现
    父类的引用指向了自己的子类对象。
    父类的引用也可以接收自己的子类对象。
    2,多态的前提
    必须是类与类之间有关系。要么继承,要么实现。
    通常还有一个前提:存在覆盖。3,多态的好处
    多态的出现大大的提高程序的扩展性。4,多态的弊端:
    虽然提高了扩展性,但是只能使用父类的引用访问父类中的成员。
    举个简单的例子:多态和子类复写抽象方法就全明了:/*
    需求:
    电脑运行实例,
    电脑运行基于主板。
    */
    interface PCI
    {
    public void open();
    public void close();
    }//主板
    class MainBoard
    {
    public void run()
    {
    System.out.println("mainboard run ");
    } //这个方法就是说只要你实现了PCI接口你就能"插在我身上"
    //PCI p = new NetCard(),接口型引用指向自己的子类对象,同理网卡也是
    //注:你还可以建立更多的对象实现PCI接口丰富电脑配置
    public void usePCI(PCI p)
    {
    //这里的P代表你传给他哪个对象,他就代表哪个对象对应的方法
    if(p!=null)
    {
    p.open();
    p.close();

    }
    }
    }//网卡实现了PCI接口复写了他的方法
    class NetCard implements PCI
    {
    public void open()
    {
    System.out.println("netcard open");
    }
    public void close()
    {
    System.out.println("netcard close");
    method();
    }

    }//声卡实现了PCI接口复写了他的方法
    class SoundCard implements PCI
    {
    public void open()
    {
    System.out.println("SoundCard open");
    }
    public void close()
    {
    System.out.println("SoundCard close");
    }
    }class MainBoardTest 
    {
    public static void main(String[] args) 
    {
    MainBoard mb = new MainBoard();
    mb.run();
    mb.usePCI(null);
    mb.usePCI(new NetCard());
    mb.usePCI(new SoundCard());

    }
    }
      

  7.   

    abstract class Animal {
      private String name;
      Animal(String name) {this.name = name;}  public void enjoy(){
        System.out.println("叫声......");
      }
     
      public abstract void enjoy();
    }可以写两个enjoy吗  我一开始觉得不行 放eclipse 还是编译出错
    Duplicate method enjoy() in type Animal是不是视频里的例子?