版权声明:卢楷方的个人分享 https://blog.csdn.net/IT_lukaifang/article/details/82694079
抽象类的特点:
/**
* abstract修饰的类
* 类中 可以出现抽象方法(使用abstract关键字修饰,没有方法体)
* 抽象方法不能私有
* 抽象类 不能被实例化
*/
如果一个方法没有方法体,那么,该方法必须定义为抽象方法。
关健字:abstract。
- A:类或者方法都必须用abstract修饰。
- B:具体类在继承抽象类的时候
要么:本身也是抽象类。
要么:重写抽象类中的所有抽象方法。 - C:抽象类不能实例化。要想使用,必须按照多态的方式。““`
- D:成员特点
- a:成员变量
可以是变量,也可以是常量。 - b:构造方法
有构造方法,但是不能实例化。“““ - 构造方法有什么用呢?
用于子类访问父类数据的初始化。 - c:成员方法
可以有抽象方法,也可以有非抽象方法。
- a:成员变量
抽象类的好处:
A:强制要求子类必须实现某些功能。(抽象方法)
B:提高代码复用性。(非抽象方法)
接口的特点
/**
* 1.关键字 interface
* 2.特殊的抽象类(只能有抽象方法)
* 3.属性:public static final 默认
* 4.方法:只能是public abstract 默认
* 5.构造方法:没有
* 6.接口可以多继承,只能继承接口(接口间可以继承)
*/
- 1、接口里面的所有的量都是常量,
2、和类的定义流程基本一致,
3、所有的方法都是public abstract
4、接口特性:
(1)接口不可以实例化
(2)实现类必须实现接口的所有方法(抽象类除外)
(3)实现类可以实现多个接口(java多继承)
(4)接口中的常量都是静态常量
二者的相同点
- 都不能被实例化
二者的区别
类型 | abstract class | Interface |
---|---|---|
定义 | abstract class关键字 | Interface关键字 |
继承 | 抽象类可以继承一个类和实现多个接口;子类只可以继承一个抽象类 | 接口只可以继承接口(一个或多个);子类可以实现多个接口 |
访问修饰符 | 抽象方法可以有public、protected和default这些修饰符 | 接口方法默认修饰符是public。你不可以使用其它修饰符 |
方法实现 | 可定义构造方法,可以有抽象方法和具体方法 | 接口完全是抽象的,没构造方法,且方法都是抽象的,不存在方法的实现 |
实现方式 | 子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现 | 子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现 |
作用 | 了把相同的东西提取出来,即重用 | 为了把程序模块进行固化的契约,是为了降低偶合 |