美文网首页
抽象方法和抽象类

抽象方法和抽象类

作者: 张威_9cfe | 来源:发表于2020-09-13 23:34 被阅读0次

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

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

相关文章

  • 抽象与接口

    抽象类 抽象类和抽象方法必须用abstract修饰 抽象类不能被实例化 抽象类有默认构造方法 有抽象方法毕为抽象类...

  • 抽象类

    1. 抽象方法和抽象类 规则如下:抽象类和抽象方法必须使用abstract修饰符,抽象方法不能有方法体抽象类不能被...

  • 抽象类与接口

    抽象方法和抽象类特点 抽象方法和抽象类必须使用abstract修饰符来定义,有抽象方法的类只能被定义为抽象类,抽象...

  • 10.抽象类的特点

    抽象类的特点 抽象方法只能在抽象类里面 抽象类和抽象方法必须被abstract修饰 抽象类不能创建对象(不能实例化...

  • 抽象类与接口

    抽象类 抽象类即使用abstract修饰的类 抽象类和抽象方法必须使用abstract来修饰。抽象方法不能够有方法...

  • 简述接口和抽象类

    接口和抽象类 定义 抽象类:有抽象方法的类就是抽象类 抽象类中可以有一般的变量和一般的方法 子类继承抽象类必须实现...

  • Java 中的抽象与接口

    抽象方法和抽象类(abstract) 抽象方法和抽象类使用 abstract 来定义,有抽象方法的类必须被定义为抽...

  • 基础知识一

    一、抽象类与接口 抽象类 特点: 1.抽象类中可以构造方法 2.抽象类中可以存在普通属性,方法,静态属性和方法。 ...

  • 抽象类与接口的区别

    抽象类 1.抽象类中可以构造方法 2.抽象类中可以存在普通属性,方法,静态属性和方法。 3.抽象类中可以存在抽象方...

  • 面向对象进阶

    1. 抽象类和抽象方法 抽象类:使用abstract修饰的类,包含抽象方法的类必须是抽象类,但抽象类不一定包含抽象...

网友评论

      本文标题:抽象方法和抽象类

      本文链接:https://www.haomeiwen.com/subject/ouygektx.html