gpt4 book ai didi

java - 抽象方法与仅子类方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:24 25 4
gpt4 key购买 nike

最近我读到一个抽象方法本质上创建了一个标记为继承的方法,它是无 block 的,等待子类专门化。好吧,我问这个:创建抽象方法,允许其继承,制作子类版本,没有对应的父类(super class)方法,以及仅由子类/在子类中定义的方法之间有什么区别。根据重写原则,子类对象不应该自动使用子类方法,如果没有对应的父类(super class)方法,子类对象总是使用子类方法。创建抽象方法的目的是什么,而不是仅创建没有父类(super class)对应物的标准方法。

我的知识可能完全有缺陷并且歪曲了我的看法:-)任何和所有帮助将不胜感激

最佳答案

它与 Polymorphism 有关;一个类(class)表现得像另一个类(class)的能力。

以有一个名为 Animal 的抽象类为例,它被子类化为 DogFish。如果在 Animal 类中我们有一个抽象方法 move() 那么 DogFish 都将被强制实现 move() 方法。

public class Animal {
public abstract void move();
}

public class Dog extends Animal {
public void move() {
System.out.println("walk");
}
}

public class Fish extends Animal {
public void move() {
System.out.println("swim");
}
}

此外,如果我们在某处有一个辅助方法:

public static void moveTheAnimal(Animal a) {
a.move();
}

那么我们知道无论提供什么具体类(子类),move() 方法都保证被定义。

另一方面,如果 Animal 类中没有抽象方法 move(),我们将需要一个 moveTheDog(Dog d)moveTheFish(Fish f) 等。

关于java - 抽象方法与仅子类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16576786/

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