抽象类和接口?

请问在什么情况下,将对象抽象为一个抽象类?在什么情况下,该将对象抽象为一个接口?我知道他们两个的区别,就是想知道在什么场景下该抽象为哪种?

翻阅古今
浏览 464回答 9
9回答

慕婉清6462132

比如说生物和人 此时生物可以当做接口,人当做实现生物的抽象类,男人女人作为具体实现类,为什么可以这样设计?因为生物是个非常非常抽象的概念,你很难抽象出它的具体行为(也就是具体的方法实现),此时可以当做接口,人为何可以作为抽象类,因为他可以有具体的行为动作实现,比如,摸爬滚走,但是可能男人女人的性征不一样,同时可能还有一些公有的行为 但是行为特征不一样 这可以当做抽象类的抽象方法,让子类实现。大概是这样。

哆啦的时光机

接口表示一个能力/行为。例如:人会跑,狗也会跑,就可以定义接口IRunable。 使用接口很好实现组件间解耦。抽象类就是为了实现多态,使代码更方便扩展。

慕雪6442864

接口就好像是100% 纯天然的抽象类。

慕的地6264312

接口的话更偏向于为一群类定一个协议, 而抽象类的话已经向实现迈进了一步。例如模板方法模式中就用到了抽象类,实现了一些通用的方法, 而将不同的方法延迟到子类再实现。

婷婷同学_

举个简单的例子,你现在想要抽象所有国家的人,那么你会想到抽象成一个接口,然后有个方法叫sayHello:public interface Human{        String sayHello();}OK,现在每个实现了这个接口的对象只要实现sayHello方法,就表示了各个国家的人,他们拥有了不同的打招呼的的方式。但是现在业务复杂起来了,你需要这些人还具备一些通用的能力,比如cry,walk,那么这个时候,你是不是应该考虑把Human抽象成为一个抽象类,像这样:public abstract class Human{        public abstract String sayHello();        public String cry(){        System.out.println("wu~wu~wu~wu~wu~");    }        public String walk(){        System.out.println("左右左 左右左");    }}总结一下,就是如果只有抽象的方法,那么就用接口,如果还有通用的具体方法实现,则用抽象类

波斯汪

参考:The Java™ Tutorials :: Learngin The Java Language :: Interfaces and Inheritances :: Inheritances :: Abstract Methods and Classes :: Abstract Classes Compared to Interfaces

月关宝盒

抽象类用于抽象事物,接口抽象行为

料青山看我应如是

该类定义统一操作,为对象提供方法
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java