java中类与接口的优缺点?
答案:2 悬赏:80 手机版
解决时间 2021-03-22 20:22
- 提问者网友:孤凫
- 2021-03-22 13:21
java中类与接口的优缺点?
最佳答案
- 五星知识达人网友:走死在岁月里
- 2021-03-22 14:27
从来没有看到过这类问题,类与接口没有什么优缺点的说法,它们面向对象程序设计语言中的必要组成部分,这个问题应该是问它们的区别,而不是问什么优缺点。
类是具体实现,接口是抽象定义。也就是说接口是定义所有实现它的类的对外表现形式。而类是接口定义的具体实现。。。同一个接口的实现方式有很多种(很多类来实现它),同一个类也可以实现很多接口
我不是理论大师,也不拿相关定义来忽悠你了,给你举一个简单的例子吧
ArrayList和LinkedList,一个是数组结构的列表,一个是链表结构的列表,它们都实现了List接口。如果在检索方面要求较高,则使用ArrayList,因为它是数组实现的,可以直接根据下标定位到其中的对象在内存中的引用。而如果频繁的插入删除,则应该使用LinkedList,因为它的插入删除仅仅修改内存引用就行了。而它们对外的行为模式差不多(LinkedList还实现了Queue接口,这个就不说了),所以让它们都来实现List接口。实际上程序如果不使用接口,也是完全能跑得通的,但以后代码维护就等着哭吧...
比如说,我现在有一个类型转换器,将String型转换成其他Long、Integer、Date等类型。但我不知道具体要转换成哪一个,只能在程序运行过程中才能知道,那么就可以有一种实现方式,定义Converter接口,具体实现类包括LongConverter、IntegerConverter和DateConverter等。再有一个ConverterFactory,ConverterFactory.getConverter(Class> clazz)来返回具体的Converter的实现类,此时程序运行过程中只要传递我要转换成的类的Class对象,就可以取得相应的Converter实现类,比如调用ConverterFactory.getConverter(Date.class);,它的返回表面上是Converter,但实际上就是实现 了Converter接口的DateConverter的转换器。这个时候,你就可以用这个Converter对象来将传入的String转换成Date类型数据了,而不是转换成其他类型的。
类是具体实现,接口是抽象定义。也就是说接口是定义所有实现它的类的对外表现形式。而类是接口定义的具体实现。。。同一个接口的实现方式有很多种(很多类来实现它),同一个类也可以实现很多接口
我不是理论大师,也不拿相关定义来忽悠你了,给你举一个简单的例子吧
ArrayList和LinkedList,一个是数组结构的列表,一个是链表结构的列表,它们都实现了List接口。如果在检索方面要求较高,则使用ArrayList,因为它是数组实现的,可以直接根据下标定位到其中的对象在内存中的引用。而如果频繁的插入删除,则应该使用LinkedList,因为它的插入删除仅仅修改内存引用就行了。而它们对外的行为模式差不多(LinkedList还实现了Queue接口,这个就不说了),所以让它们都来实现List接口。实际上程序如果不使用接口,也是完全能跑得通的,但以后代码维护就等着哭吧...
比如说,我现在有一个类型转换器,将String型转换成其他Long、Integer、Date等类型。但我不知道具体要转换成哪一个,只能在程序运行过程中才能知道,那么就可以有一种实现方式,定义Converter接口,具体实现类包括LongConverter、IntegerConverter和DateConverter等。再有一个ConverterFactory,ConverterFactory.getConverter(Class> clazz)来返回具体的Converter的实现类,此时程序运行过程中只要传递我要转换成的类的Class对象,就可以取得相应的Converter实现类,比如调用ConverterFactory.getConverter(Date.class);,它的返回表面上是Converter,但实际上就是实现 了Converter接口的DateConverter的转换器。这个时候,你就可以用这个Converter对象来将传入的String转换成Date类型数据了,而不是转换成其他类型的。
全部回答
- 1楼网友:妄饮晩冬酒
- 2021-03-22 15:08
接口的可扩展性 和 维护的方面比较 接口优于类追问说的详细点,我在面试时人家就问这个问题,我直接被问死了。追答针对一个业务 如果用类与类的继承 那么代码会十分繁琐 而且类与类的关系会很复杂 如果业务有变更 那么需要更改的地方会很多 可扩展性不好
而接口是一种标准,是一种统一,是一种对所有类的需求的描述。所有方法均为抽象的。即:只告诉你做什么,不告诉你如何做 要让它怎么做要根据具体的业务
接口的出现避免了单继承的局限性。接口与接口之间是继承关系,而且接口可以多继承。
而接口是一种标准,是一种统一,是一种对所有类的需求的描述。所有方法均为抽象的。即:只告诉你做什么,不告诉你如何做 要让它怎么做要根据具体的业务
接口的出现避免了单继承的局限性。接口与接口之间是继承关系,而且接口可以多继承。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯