语法定义
- 抽象类前面用 abstract 关键字来修饰
应用场景
- 在某些情况下,父类只知道子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法;
- 从多个具有相同特征的类中抽象出一个类,以这个抽象类作为子类的模板,从而避免子类设计的随意性;
作用(目的)
- 限制或者规定子类必须实现某些方法,但不关注实现的细节;
- 通俗的理解就是,抽象类不关注子类的实现,但是要约束子类必须有哪些特征;
使用规则
- abstract 关键字定义抽象类
- abstract 关键字定义的抽象方法只需要声明,不需要实现
- 包含抽嫌方法的类是抽象类
- 抽象类中可以包含普通的方法,也可以没有抽象方法
- 抽象类不能直接创建,可以定义引用变量指向子类的对象
代码示例
- 创建一个手机抽象类:
/**
* Created by xiezhongtian on 2017/8/24.
*/
//定义抽象类(abstract 关键字)
public abstract class Telphone {
//定义抽象方法(abstract 关键字)
public abstract void call();
public abstract void sendMessage();
}
-
- 创建一个功能机类并继承手机抽象类
/**
* Created by xiezhongtian on 2017/8/24.
*/
public class CellPhone extends Telphone {
@Override
public void call() {
System.out.println("功能机:只能用蜂窝网络多打电话");
}
@Override
public void sendMessage() {
System.out.println("功能机:不能通过语音发短信");
}
}
-
- 创建一个智能机类并继承手机抽象类
/**
* Created by xiezhongtian on 2017/8/24.
*/
public class SmartPhone extends Telphone {
@Override
public void call() {
System.out.println("智能机:可以使用种类繁多的APP打电话");
}
@Override
public void sendMessage() {
System.out.println("智能机:可以通过语音发短信");
}
}
public class Initial {//初始化类
public static void main(String[] args) {
//抽象类 (初始化抽象类)
Telphone cellPhone = new CellPhone();//创建一个功能机的对象
cellPhone.call();
cellPhone.sendMessage();
Telphone smartPhone = new SmartPhone();//创建一个智能机的对象
smartPhone.call();
smartPhone.sendMessage();
}
}
-
- 输出结果
功能机:只能用蜂窝网络多打电话
功能机:不能通过语音发短信
智能机:可以使用种类繁多的APP打电话
智能机:可以通过语音发短信