簡談 java 抽象類 抽象方法(基礎)

     不多說,上代碼先!!!!

class Bit {
        Shape s;
        Bit(Shape s){
                this.s = s;
        }
        public double getTwo(Shape h){
                double area = h.getArea();
                return 2*area;
        }
        public static void main(String [] args){
                System.out.print("tthellonn");
                Shape s1 =new Square(1);
                System.out.println("正方形的面積"+s1.getArea());
                System.out.println("正方形的周長"+s1.getPan());
               
                Shape s2 = new Rectangle(1,2);
                System.out.println("長方形的面積"+s2.getArea());
                System.out.println("長方形的周長"+s2.getPan());
               
                Shape s3 = new Circle(1);
                System.out.println("圓的面積"+s3.getArea());
                System.out.println("圓的周長"+s3.getPan());
               
                Bit t = new Bit(s1);
                System.out.println("正方形面積的兩倍"+t.getTwo(s1));
               
        }
}
abstract class Shape{//抽象類
        public abstract double getArea();//抽象方法
        public abstract double getPan();
}
class Square extends Shape{
        protected double len;
        Square(double len){
                this.len = len;
        }
       
        public double getPan(){
                return 4*len;
        }

  @Override
  public double getArea() {
   // TODO Auto-generated method stub
   return len * len;
  }
}
class Rectangle extends Square{
        private double wid;
        Rectangle(double len,double wid){
                super(len);
                this.wid = wid;
        }
        public double getArea(){
                return wid*len;
        }
        public double getPan(){
                return (wid+len)*2;
        }
}
class Circle extends Shape{
        private double r;
        Circle (double r){
                this.r = r;
        }
        public double getArea(){
                return Math.PI*r*r;
        }
        public double getPan(){
                return Math.PI*r*2;
        }
}

 

注意事項:

(1)凡是用abstract 修飾符修飾的類被稱爲抽象類。凡是用abstract修飾符修飾的成員方法被稱爲抽象方法;

(2)抽象類中可以有零個或多個抽象方法,也可以包含非抽象的方法;
 
(3)抽象類中可以沒有抽象方法,但是,有抽象方法的類必須是抽象類;
 
(4)對於抽象方法來說,在抽象類中只指定其方法名及其類型,而不書寫其實現代碼;
 
(5)抽象類可以派生子類,在抽象類派生的子類中必須實現抽象類中定義的所有抽象方法;
 
(6)抽象類不能創建對象,創建對象的工作由抽象類派生的子類來實現;
 
(7)如果父類中已有同名的abstract方法,則子類中就不能再有同名的抽象方法;
 
(8)abstract不能與final並列修飾同一個類;
 
(9)abstract 不能與private、static、final或native並列修飾同一個方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章