抽象方法可以有方法体_抽象类和模板方法设计模式
生活随笔
收集整理的這篇文章主要介紹了
抽象方法可以有方法体_抽象类和模板方法设计模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
抽象方法和抽象類
抽象類:用abstract修飾符修飾的類,如:
public abstract class GeneralService { }抽象方法:用abstract修飾符修飾的方法,抽象方法不能有方法體,如:
public abstract void service();抽象類和抽象方法的規則如下:
下面定義一個Shape抽象類:
/** * 定義一個抽象類,用于描述抽象概念的“形狀” */public abstract class Shape {? // 形狀的 顏色 private String color;? public String getColor() { return color; }? public void setColor(String color) { this.color = color; }? // 帶參構造器 public Shape(String color) { this.color = color; }? // 定義一個計算周長的抽象方法 public abstract double calPerimeter();}上面的Shape類中包含了一個抽象方法calPerimeter(),所以Shape類只能是抽象類。Shape類中既包含初始化塊,又包含構造器,不過這些都不是在創建Shape對象時被調用的,而是在創建其子類對象時被調用。
下面定義一個Triangle類和一個Circle類,讓他們繼承Shape類,并實現Shape中的抽象方法calPerimeter()。
/** * 定義一個三角形類,繼承自形狀類 */public class Triangle extends Shape {? // 定義三角形的三條邊 private double a; private double b; private double c;? public Triangle(String color, double a, double b, double c) { super(color); this.a = a; this.b = b; this.c = c; }? @Override public double calPerimeter() { return a + b + c; }}/** * 定義一個圓形類,繼承自形狀類 */public class Circle extends Shape {? // 定義圓的半徑 private double radius;? public Circle(String color, double radius) { super(color); this.radius = radius; }? @Override public double calPerimeter() { return 2 * Math.PI * this.radius; }}?Shape(形狀)類是一個抽象的概念,Triangle(三角形)類和Circle(圓形)類是Shape的具象,它們都各自實現了Shape的calPerimeter()方法,兩者計算周長的公式不一樣。
下面是測試類:
/** * 測試類 */public class Test { public static void main(String[] args) { Shape s1 = new Triangle("黃色總結
以上是生活随笔為你收集整理的抽象方法可以有方法体_抽象类和模板方法设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一口价黄金以后怎么换
- 下一篇: 策略模式和工厂模式的区别_设计模式之工厂