抽象类是什么?
如果一个类中没有包含走狗的信息来描述一个具体的 对象,这样的类就是抽象类。
语法 | 备注 |
---|---|
抽象类定义用abstract关键字修饰 | 要通过子类进行实例化 |
抽象类是不能被实例化的 | 要通过子类进行实例化 |
子类必须重写父类的所有抽象方法 | 抽象方法:声明但却未被实现的方法,用abstract关键字修饰 |
含有抽象方法的类一定是抽象类,但是抽象类不一定含有抽象方法 | 无 |
抽象类是用来被它的子类继承的 | 关键字extends |
抽象类是在功能上的一个规定 | 无 |
什么是接口
用interface关键字修饰
- 作用: interface是为了把程序模块 进行固化的契约,是为了降低耦合
- 使用interface的语法规定
语法 | 备注 |
---|---|
接口定义用interface关键字修饰 | |
接口中所有的方法都是抽象的 | 可以用abstract修饰,也可以省略 |
接口中的方法必须是用public修饰,或不写 | 但是不能被其他修饰符修饰 |
接口中的属性必须是全局常量 | public static final修饰 |
抽象类是用来被他的子类实现的 | 关键字implement |
抽象类是在结构上的一个规定 | 无 |
接口不能被实例化 | 无 |
子类实现接口时需要实现接口中所有的方法 | 若有一个不实现,该子类就是抽象类 abstract class |
二者的相同点
都不能被实例化
二者的区别
类型 | abstract class | interface |
---|---|---|
定义一个 | abstract class 关键字 | interface关键字 |
继承 | 抽象类可以继承一个类和实现多个接口;子类只可以继承一个抽象类 | 接口可以继承接口(一个或多个),子类可以实现多个接口 |
访问修饰符 | 抽象方法可以有public project和default这些修饰符 | 接口方法默认修饰符是public,你不可以使用其他修饰符 |
方法实现 | 可以定义构造方法,可以有抽象方法和具体方法 | 接口是完全抽象的,没构造方法,且方法都是抽象的,不存在方法的实现 |
实现方式 | 子类使用extends关键字来继承抽象类,如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现 | 子类使用关键字implement来实现接口,它需要提供接口中所有声明的方法的实现 |
作用 | 为了把相同的东西提取出来,即重用 | 为了把程序模块进行固化契约,是为了降低耦合 |
网友评论