太自由

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
 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 }

 

posted on 2016-05-01 16:41  太自由  阅读(2621)  评论(0编辑  收藏  举报