抽象方法和抽象类

2020-09-13  本文已影响0人  张威_9cfe

抽象方法和抽象类的规则如下:

1.抽象类必须使用 abstrac 符来修饰,抽象方法也必须使用 abtract 修饰符来修饰,抽象方法不能有方法体
2.抽象类不能被实例化, 无法使 new 关键字来调用抽象类的构造器创建抽象类的实例
3.抽象类可包含成员变量、方法(普通方法和抽象方法都可以)、构造器 ,初始化块(创建其子类的实例时被调用)、内部类(接口、枚举) 种5成分 ,抽象类的构造器不能用于创建实例 主要是用于被其子类调用。
4.含有象方法的类只能被定义成抽象类
5.final修饰的类不能被继承 ,final修饰的方法不能被重写,因此 final和abstract 永远不能同时使用
6.static和abstract 不能同时修饰某个方法,但它们可以同时修饰内部类
7.abstrac 方法不能定义为 privat 访问权限,即 private和abtract 不能同时修饰方法

模板模式案例

public abstract class SpeedMeter {
    {
        System.out.println("执行SpeedMeter初始化块");
    }
    
    //转速
    private double turnRate;
    
    //定义Shape的构造器 该构造器并不是用于创建 Shape 对象
    public SpeedMeter() {
        System.out.println("执行SpeedMeter构造器");
    }
    
    //计算周长抽象方法
    public abstract double CalGirth();
    
    public void setTurnRate(double turnRate) {
        this.turnRate = turnRate;
    }
    
    //计算速度
    public double getSpeed() {
        return turnRate * CalGirth();
    }
}

public class CarSpeedMeter extends SpeedMeter{
    private double radius;
    
    public CarSpeedMeter(double redius) {
        this.radius = redius;
    }
    
    public double CalGirth() {
        return 2 * Math.PI * radius;
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        CarSpeedMeter csm = new CarSpeedMeter(0.34);
        csm.setTurnRate(15);
        System.out.println("speed=" + csm.getSpeed());
    }

}

打印结果
执行SpeedMeter初始化块
执行SpeedMeter构造器
speed=32.04424506661589
上一篇 下一篇

猜你喜欢

热点阅读