抽象类
抽象类的基本概念
抽象方法
在理解抽象类之前,先了解抽象方法,抽象方法是指只经过声明而未实现(没有方法体{})的方法,抽象方法定义时要使用abstract
关键字。
-
普通方法
public void example(){}
-
抽象方法
public abstract void example();
抽象类的最大特点是包含抽象方法,抽象类用abstract
关键字定义。抽象方法必须在抽象类里面,而抽象类可以没有抽象方法
抽象类的使用原则
- 抽象类必须拥有子类,使用extends继承,一个子类只能继承一个抽象类
- 子类(如果不是抽象类)必须覆写该抽象类的全部抽象方法
- 抽象类对象不能被实例化,需要通过向上转型方式,利用子类进行实例化操作
举个栗子
//这是一个抽象类
public abstract class A {
public void print() {
System.out.println("这是一个普通方法");
}
//定义抽象方法
public abstract void get();
}
public class Impl extends A {
@Override
public void get() {
System.out.println("这是一个抽象方法");
}
}
public class TestDemo {
public static void main(String[] args) {
A a = new Impl(); //向上转型,通过子类来实例化抽象类对象
a.print();
a.get();
}
}
抽象类的应用
接口
什么是接口
如果一个类定义时全部由抽象方法和全局常量组成,那么这个类就称为接口,接口使用
interface
关键字
接口的使用原则
- 每一个接口必须定义子类,即接口的作用就是被实现,子类使用
implements
关键字实现接口 - 接口的子类(如果不是抽象类),必须覆写接口里的全部抽象方法
- 接口不能进行实例化,利用接口的子类,采用对象的向上转型方式,进行接口对象的实例化操作
- 如果一个类既要实现接口又要继承抽象类,则先继承后实现
- 接口的访问权限只有一种:
public
注意:接口不是类,一个用interface
定义,一个用class
定义
接口的应用
接口与抽象类的区别
语法层面
接口与抽象类的区别设计层面
抽象类是对事物的抽象,即对类的抽象,接口是对行为的抽象
网友评论