关于多层继承的问题,有代码。(多层继承是我自己想出来的词,不知道恰不恰当~)

来源:9-1 Java 中的继承

_Jack_Han_

2016-01-06 00:07

//先看代码
//创建一个父类
public class Plant{
 String color;
 String kind;
 private int age;
 public void eat(){
   System.out.println("有的植物可以被食用,比如香蕉。");
 }
}
//创建子类
public class Banana extends Plant{

}
//创建运行类
public class Run{
public static void main(String[] args){
 Banana banana=new Banana();
  banana.color="yellow";
  banana.kind="fruit";
  banana.eat();
  System.out.println("香蕉的颜色是"+banana.color);
  System.out.println("香蕉的种类是"+banana.kind);
}
}
//运行结果:
//有的植物可以被食用。
//香蕉的颜色是yellow
//香蕉的种类是fruit
//再创建一个Banana的子类
public Hello extends Banana{

}
//再创建一个运行类
public class Run2{
public static void main(String[] args){
 Hello hello=new Hello();
 hello.eat();
 System.out.println(hello.color);
 System.out.println(hello.kind);
}
}
//运行结果:
//有的植物可以被食用。
//null
//null

为什么Hello类作为Banana的子类却不能继承Banana的属性和方法(显然eat方法是继承Plant);
课程里说Java只能单继承,我创建的Hello类是Banana的子类,却继承了Plant类的属性和方法,这是不是有两个父类呢?
望高手解答,谢谢!


写回答 关注

2回答

  • Its_forever
    2016-01-06 00:23:54
    已采纳
    public class Run2{
    public static void main(String[] args){
     Hello hello=new Hello();  
     hello.eat();
     //你并没有调用父类方法的color和kind啊,而且也没有给这个属性赋初始值,就默认为null了。
     //你只是在run中的main方法中给Banana赋值了,对Hello并没有影响。
     //你在这里输入hello.color="test"; hello.kind="test"就好了,或者给Plant的两个属性赋一个初始值。
     System.out.println(hello.color);
     System.out.println(hello.kind);
    }
    }


    慕仰9290... 回复_Jack_...

    ‘Banana的类里是空的,所以Hello什么都没继承到"不怎么对

    2016-05-10 16:11:19

    共 7 条回复 >

  • _Jack_Han_
    2016-01-06 00:09:40

    eat方法的运行结果少写了“比如香蕉”,请忽略。

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530561 学习 · 6091 问题

查看课程

相似问题