gpt4 book ai didi

java - Java继承和重写的概念有困难

转载 作者:行者123 更新时间:2023-11-29 04:42:00 25 4
gpt4 key购买 nike

<分区>

父类(super class)引用变量可以保存子类对象,但使用该变量只能访问父类(super class)的成员,因此要访问两个类的成员,建议始终为子类创建引用变量。

class Animal {
public void move() {
System.out.println("Animals can move");
}
}

class Dog extends Animal {
public void move() {
System.out.println("Dogs can walk and run");
}
public void bark() {
System.out.println("Dogs can bark");
}
}

public class TestDog {

public static void main(String args[]) {
Animal a = new Animal(); // Animal reference and object
Animal b = new Dog(); // Animal reference but Dog object

a.move(); // runs the method in Animal class
b.move(); // runs the method in Dog class
b.bark();
}
}

输出:

TestDog.java:26: error: cannot find symbol
b.bark();
^
symbol: method bark()
location: variable b of type Animal
1 error

我在这里不明白的是为什么对象“b”能够访问 Dog.move() 而不是 Dog.bark() 因为上面提到的语句说它只能访问父类(super class)的成员而不是子类。按照这个逻辑,b.move() 的输出应该是“动物可以移动”而不是“狗可以走和跑”。但事实并非如此。有人能帮我解决这个问题吗?提前致谢!

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com