- 抽象方法:仅有方法特征,但没有代码;—就是没有函数体的格式:权限修饰符
abstract void test();
- 用abstract修饰的类也叫抽象类
- 类里有abstract修饰的成员方法,那么这个类就是抽象类,必须加上abstract修饰类
抽象类的作用:提供一种适当的超类,子类通过继承实现父类中的抽象方法
抽象类的注意:
- 抽象类不能实例化对象
- 任何子类必须重写父类的抽象方法,或者声明自身为抽象类
- 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。
案例:
package heihei;
public class 抽象类 {
public static abstract class Drink{
//煮水
abstract void Boil();
//冲泡
abstract void Brew();
//倒入杯中
abstract void PourInCup();
//加点辅料
abstract void AddSonm();
void test() {//模版方法
Boil();
Brew();
PourInCup();
AddSonm();
}
}
public static class Coffee extends Drink{
//煮水
void Boil() {
System.out.println("煮点露水");
}
//冲泡
void Brew() {
System.out.println("拿铁");
}
//倒入杯中
void PourInCup() {
System.out.println("倒入盆中");
}
//加点辅料
void AddSonm() {
System.out.println("加入酱油");
}
}
public static class Tea extends Drink{
//煮水
void Boil() {
System.out.println("煮点自来水");
}
//冲泡
void Brew() {
System.out.println("铁观音");
}
//倒入杯中
void PourInCup() {
System.out.println("倒入桶中");
}
//加点辅料
void AddSonm() {
System.out.println("加入盐");
}
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
Coffee c=new Coffee();
c.Boil();
c.Brew();
c.PourInCup();
c.AddSonm();
System.out.println("-------------");
c.test();
System.out.println("----------------");
Tea t=new Tea();
t.Boil();
t.Brew();
t.PourInCup();
t.AddSonm();
System.out.println("----------------");
t.test();
}
}