《Java中的抽象類及抽象類的作用》


 1 //抽象類示例:
 2 abstract class Shape1
 3 {
 4     {
 5         System.out.println("執行Shape的初始化塊...");
 6     }
 7     private String color;
 8     //定義一個計算周長的抽象方法,
 9     public abstract double calPerimeter();
10     //定義一個返回形狀的抽象方法,
11     public abstract String getType();
12     //定義Shape的構造器,該構造器並不是用於創建Shape對象,而是用於創建子類調用
13     public Shape1(){}
14     public Shape1(String color)
15     {
16         System.out.println("執行Shape的構造器...");
17         this.color = color;
18     }
19     public void setColor(String color){this.color = color;}
20     public String getColor(){return color;}
21 }
22 
23 class Triangle extends Shape1
24 {
25     //定義三角形的三邊
26     private double a;
27     private double b;
28     private double c;
29     public Triangle(String color,double a,double b,double c)
30     {
31         super(color);
32         this.setSides(a,b,c);
33     }
34     public void setSides(double a,double b,double c)
35     {
36         if(a>b+c || b>a+c || c>a+b)
37         {
38             System.out.println("三角形兩邊之和必須大於第三邊");
39             return;
40         }
41         this.a = a;
42         this.b = b;
43         this.c = c;
44     }
45     //重寫Shape類的計算周長的抽象的方法
46     public double calPerimeter()
47     {
48         return a+b+c;
49     }
50     //重寫Shape類的返回形狀的抽象的方法
51     public String getType()
52     {
53         return "三角形";
54     }
55 }
56 
57 public class AbstractTest
58 {
59     public static void main(String[] args) 
60     {
61         Shape1 s1 = new Triangle("黑色",3,4,5);
62         System.out.println(s1.getType());
63         System.out.println(s1.calPerimeter());
64     }
65 }
 1 //抽象類的作用;模板作用(本例中:
 2 //抽象的父類中,父類的普通方法依賴於一個抽象方法,而抽象方法則推遲到子類中
 3 //去實現)
 4 abstract class SpeedMeter
 5 {
 6     private double turnRate;
 7     public SpeedMeter(){}
 8     public abstract double getRadius();
 9     public void setTurnRate(double turnRate)
10     {
11         this.turnRate = turnRate;
12     }
13     //定義計算速度的方法
14     public double getSpeed()
15     {
16         //速度等於車輪半徑*2*PI*轉速
17         return java.lang.Math.PI * 2 * getRadius() * turnRate;
18     }
19 }
20 public class CarSpeedMeter extends SpeedMeter
21 {
22     public double getRadius()
23     {
24         return 0.28;
25     }
26     public static void main(String[] args) 
27     {
28         CarSpeedMeter csm = new CarSpeedMeter();
29         csm.setTurnRate(15);
30         System.out.println(csm.getSpeed());
31     }
32 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM