當(dāng)前位置:
首頁(yè) >
抽象方法可以有方法体_抽象类和模板方法设计模式
發(fā)布時(shí)間:2025/4/5
31
豆豆
生活随笔
收集整理的這篇文章主要介紹了
抽象方法可以有方法体_抽象类和模板方法设计模式
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
抽象方法和抽象類
抽象類:用abstract修飾符修飾的類,如:
public abstract class GeneralService { }抽象方法:用abstract修飾符修飾的方法,抽象方法不能有方法體,如:
public abstract void service();抽象類和抽象方法的規(guī)則如下:
下面定義一個(gè)Shape抽象類:
/** * 定義一個(gè)抽象類,用于描述抽象概念的“形狀” */public abstract class Shape {? // 形狀的 顏色 private String color;? public String getColor() { return color; }? public void setColor(String color) { this.color = color; }? // 帶參構(gòu)造器 public Shape(String color) { this.color = color; }? // 定義一個(gè)計(jì)算周長(zhǎng)的抽象方法 public abstract double calPerimeter();}上面的Shape類中包含了一個(gè)抽象方法calPerimeter(),所以Shape類只能是抽象類。Shape類中既包含初始化塊,又包含構(gòu)造器,不過(guò)這些都不是在創(chuàng)建Shape對(duì)象時(shí)被調(diào)用的,而是在創(chuàng)建其子類對(duì)象時(shí)被調(diào)用。
下面定義一個(gè)Triangle類和一個(gè)Circle類,讓他們繼承Shape類,并實(shí)現(xiàn)Shape中的抽象方法calPerimeter()。
/** * 定義一個(gè)三角形類,繼承自形狀類 */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; }}/** * 定義一個(gè)圓形類,繼承自形狀類 */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(形狀)類是一個(gè)抽象的概念,Triangle(三角形)類和Circle(圓形)類是Shape的具象,它們都各自實(shí)現(xiàn)了Shape的calPerimeter()方法,兩者計(jì)算周長(zhǎng)的公式不一樣。
下面是測(cè)試類:
/** * 測(cè)試類 */public class Test { public static void main(String[] args) { Shape s1 = new Triangle("黃色總結(jié)
以上是生活随笔為你收集整理的抽象方法可以有方法体_抽象类和模板方法设计模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 一口价黄金以后怎么换
- 下一篇: 策略模式和工厂模式的区别_设计模式之工厂