gpt4 book ai didi

java - 可以使用具体类来实现抽象吗?

转载 作者:行者123 更新时间:2023-12-02 11:02:17 25 4
gpt4 key购买 nike

我已尽力寻找这个问题的答案,但徒劳无功。
因此,我在采访中被问到这个问题,我回答是。由于抽象只是简单地向用户隐藏实现细节,这样用户就不需要担心实现,只知道方法签名(需要传递的对象类型和返回类型)。根据传递的对象类型,开发人员可以决定实现并返回相应的结果。因此,根据我的说法,这也可以使用下面的具体普通类来完成。

public class LearnAbstraction {

public static void main(String[] args) {
Animal animal = new Tiger();
SpeakingAnimal sa = new SpeakingAnimal();
sa.getAnimalToSpeak(animal);
}
}

class SpeakingAnimal {
public void getAnimalToSpeak(Animal animal){
animal.speak();
}
}

class Animal{
public void speak(){
System.out.println("I am an Animal");
}
}

class Tiger extends Animal {
public void speak() {
System.out.println("I am an Animal and Tiger");
}
}

class Horse extends Animal {
public void speak() {
System.out.println("I am an Animal and Horse");
}
}

我知道这不是实现抽象的正确方法,它必须使用接口(interface)或抽象类来完成。但是,问题是是否可以使用具体类来实现抽象(让我们把适当的方式放在一边)。那么,这个问题的答案是"is"吗?

最佳答案

抽象类不能生成实例;您可以通过声明私有(private)构造函数来确保它不会出现。

这是一个例子:

class Animal{
private Animal() {
}

public void speak(){
System.out.println("I am an Animal");
}

static class Tiger extends Animal {
public void speak() {
System.out.println("I am an Animal and Tiger");
}
}

static class Horse extends Animal {
public void speak() {
System.out.println("I am an Animal and Horse");
}
}
}

关于java - 可以使用具体类来实现抽象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51239099/

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