//先看代码 //创建一个父类 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类的属性和方法,这是不是有两个父类呢? 望高手解答,谢谢!
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); } }
eat方法的运行结果少写了“比如香蕉”,请忽略。