为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

幕布斯6054654 2021-05-05 13:18:42
我已经尽力找到了这个问题的最佳答案,但徒劳。因此,在采访中有人问我这个问题,我回答“是”。由于抽象只不过是向用户隐藏了实现细节,因此用户不必担心实现,而只知道方法签名(需要传递的对象的类型和返回类型)。根据传递的对象类型,开发人员可以决定实现并返回相应的结果。因此,根据我的说法,这也可以使用如下的具体普通类来完成。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");    }}我知道这不是实现抽象的正确方法,必须使用接口或抽象类来完成。但是,问题是,是否可以使用具体的类来实现抽象(让我们将适当的方法放在一边)。因此,回答“是”是否正确?
查看完整描述

1 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

抽象类不能产生实例;它不能产生实例。您可以通过声明私有构造函数来确保不这样做。


这是一个例子:


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");

        }

    }

}


查看完整回答
反对 回复 2021-05-19
  • 1 回答
  • 0 关注
  • 165 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信