使用了关键词abstract声明的类叫作“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。
“抽象方法”,属于一种不完整的方法,只含有一个声明,没有方法主体。
使用抽象类要注意以下几个要点:
包含一个或者多个抽象方法的类必须被声明为抽象类.
将类声明为抽象类,不一定含有抽象方法.
通常认为,在抽象类中不应该包括具体方法,建议尽量将通用的域和方法放在超类中.
抽象类不可以被实例化.即不能创建这个类的对象
实例代码:
package com.imooc.chouxiang;
//定义一个抽象父类Telephone
public abstract class Telephone {
//定义两个抽象方法,抽象方法没有方法体,以分号结束。
public abstract void call();
public abstract void message();
}
定义两个子类CellPhone,SmartPhone继承Telephone,子类会自动生成call,message方法,在子类中实现具体的方法。
package com.imooc.chouxiang;
public class CellPhone extends Telephone {
@Override
public void call() {
System.out.println("传统手机用键盘拨打电话!!");
}
@Override
public void message() {
System.out.println("传统手机用键盘发短信!!");
}
}
package com.imooc.chouxiang;
public class SmartPhone extends Telephone {
@Override
public void call() {
System.out.println("智能手机用语音拨打电话!!");
}
@Override
public void message() {
System.out.println("智能手机用语音发送短信!!");
}
}
创建一个测试类测试抽象类及子类,代码及运行结果如下:
package com.imooc.chouxiang;
public classTestPhone {
public static void main(String[] args) {
//CellPhone的一个实例
Telephonetl1=new CellPhone();
//调用CellPhone的两个方法
tl1.call();
tl1.message();
//SmartPhone的一个实例
Telephonetl2=new SmartPhone();
//调用SmartPhone的两个方法
tl2.call();
tl2.message();
}
}
运行结果如下:
传统手机用键盘拨打电话!!
传统手机用键盘发短信!!
智能手机用语音拨打电话!!
智能手机用语音发送短信!!