java中的抽象类和接口的理解


抽象
1.使用abstract 关键字
2.可以修饰方法,类

1.被abstract修饰的方法叫做抽象方法.该方法是没有方法体的.
2.抽象方法只能在抽象类中
3.含有抽象方法的是抽象类,但是抽象类不是一定要有抽象方法.
4.抽象类中有抽象方法也可以有实例方法
5.abstract 和static 不可以一起使用.
6.抽象意味这继承
7.抽象类不可以直接实例化


--------------------------------------------------------------------

接口:
接口是一种比抽象类更加抽象的"类"
(这里为什么会用类但是加了引用个是因为接口本身不直接是类,在底层编译时会由JVM转换成抽象类)
但是要明确:接口本身就不是类.

接口是用来定义类和之间的协议,它所提供的是一种形式而没有具体实现.
(接口中在jdk8之前是没有方法体的jdk8可以使用default关键字修饰方法)
同时如果有类实现了接口那么必须实现接口中没有实现方法.实现通过关键字implements
interface. --外貌他的实现类代表如何工作.

接口中需要注意的问题:

1.接口中的方法默认访问权限都是public.确切来说只能是public.因为接口是对外
2.接口中的变量默认都是public static final 的也就是都是常量.常量的变量名必须大写.因为是static所以接口中的常量可以直接通过InterfaceName.变量
3.在8之前接口中没有方法体.8之后如果想在接口中使用方法体必须使用default关键字
4.实现接口的非抽象类必须实现接口中全部只有声明的方法
5.实现接口的如果是抽象类可以选择不重写任何方法直接继续抽象下去
6.不能通过new关键字直接实例化接口.
7.实现多接口时比如:A.impB,C,D 那么BCD中不要存在同名方法.
8.都说Java单继承多实现.如果是接口可以多继承但是接口不可以实现接口哪怕有了default

接口与抽象类的区别
1.从语法层次说
1.1接口的语法是interface而抽象类的语法是abstract class
1.2抽象方法中可以接受任意访问类型,接口中只能是public
1.3抽象类中可以有常量可以有变量,接口中只能有常量
1.4在不使用default接口中所有方法没有方法体,抽象类中即可以有方法声明也可以有方法体
从语法角度来说可以理解接口是特殊的抽象类.

2.从设计层次说
2.1 抽象层次不同. 抽象类是对类的抽象,接口是对行为的抽象.抽象类是对整个类进行抽象.接口是对类局部(行为)进行抽象
2.2 跨域不同.抽象类是为了继承,抽象类的跨域是具有相似特征的,而接口是跨不同的.
接口和实现类并不要求在本质上是一样的.仅仅只是实现了接口的契约而已.抽象了是为了继承继承要满足is-a 从根本上来说父类和子类的本质是一样的.
2.3 设计层次不同.对于抽象类来说是自下来上的设计.因为我们要知道众多子类的行为和特征才可以抽取组成抽象类.
然而接口定义规则可以在不知道子类的情况下,先定义一个规则.所以接口是从上往下设计的.


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM