JAVA基础复习总结---------接口与抽象类小结
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JAVA基础复习总结---------接口与抽象类小结,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3131字,纯文字阅读大概需要5分钟。
内容图文
![JAVA基础复习总结---------接口与抽象类小结](/upload/InfoBanner/zyjiaocheng/856/ae9bcf404dc5479ab49097d3ff811f6b.jpg)
1.接口
绪论
接口是用来描述类具有什么功能,而并不给出每个功能的具体实现,一个类可以实现多个接口,并在需要接口的地方,随时使用实现了相应接口的对象。---《Java核心技术卷1》
核心要点
上面的绪论几乎就将接口的核心知识概括完了。所以这里是一个详解。
- 描述。
- 接口不是类,是类型(typing)。类也是类型。
- 接口中不能实现任何方法,default 关键字是默认方法,不是实现。
- 接口没有构造器。所以不能使用 new 运算符实例化一个接口.
- 尽管不能构造接口的对象,却能声明接口的变量:接口变量必须引用实现了接口的类对象。
- 接口一定需要别的类实现,才能起到描述作用,所以导致了:
- 接口的修饰符只有以下几种:public,abstract,default(缺省(默认)情况下为 public),static,strictfp
- 接口中所有的域都是常量。所以域只能使用public static final。(注:现在已经拥有了Enum类,所以如果可以不要把常量写在接口中)
- 所有的方法自动属于public abstract(注:尽管如此,实现接口的类依然中的方法必须要把方法声明为public)
- 接口不是类,是类型(typing)。类也是类型。
- 接口的优点在于可以实现多个接口,这样是对多重继承的一种更好的替代品(毕竟C++中的多重继承给了程序员一个非常大的打击。)
注意的地方
- 接口中的默认方法
- 默认方法必须使用 default 去实现。
- 如果你在某个类实现了两个含有相同的方法的接口,并且其中一个方法拥有默认实现,那么就会出现接口冲突,编译器会报错提醒你去解决。
- 虽然我们允许接口中增加静态方法,但是因为这有违于接口作为抽象规范的初衷,所以Java类库将静态方法放在了伴随类中。
- 如:Path/Paths,Collection/Collections(加了一个s)
- 但是,现在既然允许了接口中添加静态方法,那么我们自己的代用就弃用了伴随类。
- 超类优先原则
- 如果一个类的父类和实现的接口中有相同的方法(名字,参数,签名),那么优先使用超类的方法。
- 所以千万不要在你的接口中定义:toString()之类的Object拥有的方法,因为绝对会被覆盖掉。
- 接口可以帮你实现完全解耦
2.抽象类
抽象类是由abstract修饰符修饰的类,而抽象方法必须在抽象类中。
抽象方法
抽象方法:拥有abstract修饰符,并且权限只有public(当我们不写public时,会自动添加一个public,所以protected和private 都不能修饰抽象方法)
public abstract class absClass { abstract void absMethod(); }
在接口中也可以包含抽象方法(接口内部只有抽象方法),但是接口不是类,所以能包含抽象方法的类只有抽象类。
抽象类
抽象类与普通类的比较:
1)抽象方法必须为public 或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省(default)情况下默认为public。
2)抽象类不能用来创建对象;
3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。
抽象类与接口的比较
但是抽象类和接口有很多有意思的异同点。
- 接口不是类,但是抽象类是类。虽然二者都不可以被初始化。
- 接口是对行为的抽象,抽象类是对类的抽象。也就是接口抽象的更为彻底。
- 抽象类作为很多子类的父类,它是一种模板式设计。接口是一种行为规范,它是一种辐射式设计。
- 抽象类除了抽象方法外和普通类没有区别,而接口则根本就不是类
- 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的,原因同上一条
- 抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;原因同上上一条
- 一个类只能继承一个抽象类,而一个类却可以实现多个接口。
- 综上,抽象类是抽象弱化版的接口,接口是抽象强化的抽象类。当然我们可以这样心里想想,不可以告诉其他人,因为漏洞百出。
总结:
- 任何抽象性都应该是应真正的需求而产生的
- 恰当的原则应该是优先选择类而不是接口
- 接口是一种重要的工具,但是容易被滥用
相关知识点:
lambda 表达式:
内部类:
内容总结
以上是互联网集市为您收集整理的JAVA基础复习总结---------接口与抽象类小结全部内容,希望文章能够帮你解决JAVA基础复习总结---------接口与抽象类小结所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。