抽象类
定义:
在JAVA中通过继承可以创建一种类专门用来当做父类,这种类成为“抽 象类”(含有抽象方法的类叫抽象类)
## 抽象类特点:
- 它必须要有abstract修饰
- 抽象类中可以没有任何方法
- 抽象类中可以有无参构造和有参构造,但是抽象类不能被实例化,可以用类对象的引用来代替
- 抽象类可以有抽象方法,但是必须保证抽象方法没有方法体
- 抽象类的子类必须实现抽象方法,若不实现抽象类的抽象方法,则它的子类必须为抽象类
- 抽象类可以有类变量,类方法
- 抽象类可以有成员变量,成员方法
- 抽象类可以有普通代码块和静态代码块
- 抽象类中还可以定义常量
- abatract和final不能同时加到一个类上,即:abstract final class Plant()错误
- abstract不能与private,final,static直接一起使用
- 抽象类必须被继承
- 抽象类中的普通方法可以不被实现
抽象方法
抽象方法指一些有方法声明,而没有方法体的方法
- 抽象方法只能由抽象类或接口定义
- 抽象方法的目的在于指定派生类必须实现与这一方法关联的行为
- 它要被使用,必须有子类重写抽象方法后,建立子类对象的引用,如果子类只覆盖了一部分抽象方法,那么该子类还是一个抽象类
- 抽象方法只需声明,但必须被重写
抽象类和接口的异同
接口 | 抽象类 | |
---|---|---|
变量 | 只能定义静态常量,不能定义普通变量。不可以私有,默认是public static final类型,且必须给定初始值,实现类中不能重新定义,不能改变其值 | 可以定义静态常量,也可以定义普通变量。默认是friendly型,值在子类中重新定义,亦可以重新赋值。 |
初始化 | 常量必须初始化 | 变量可以不用初始化 |
方法 | jdk8之前,只包含抽象方法,jdk8之后,还包含默认方法,静态方法 。不可以私有的,默认方法是public,abstract类型 | 可以包含普通方法,抽象方法。可以私有 |
代码块 | 不能包含初始化代码块 | 能包含初始化代码块 |
实现 | 多实现 | 单继承 |
转载:https://blog.csdn.net/qq_44102678/article/details/101982879
查看评论