iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0

抽象類別(Abstract Class)
在類別名稱前加上abstract存取控制字符,這個類別會變成抽象類別,表示其只有抽象的概念,不能產生物件。
像昨天提到的Land類別,只是用來表示某種形狀的土地,沒有用來產生物件,所以也可以寫成抽象類別。

abstract class Land{
    double area(){
        return 0;
    }
}

抽象方法(Abstract Method)
其中,Land類別有area()方法,只是為了讓其他衍生類別(圓形、長方形)有area()方法 ,本身不執行任何動作,所以此方法也可以加上abstract,寫成抽象方法(Abstract Method)。

abstract class Land{
    abstract double area();
}

如果某個類別中有抽象方法,則此類別一定要標註成抽象類別。但抽象類別不一定要有抽象方法。

介面(Interface)
介面代表一群共通的行為,他和類別有些相似,但介面只用來描述某種行為方式。

interface 介面名稱{
	介面中的方法
}

介面的實作
要使用介面的類別,在類別名稱之後使用implements保留字及介面名稱,就可以實作該介面。

package com.mycompany.testseven;

public class Shape {
    protected double x,y;
    
    public Shape(double x,double y){
        this.x=x;
        this.y=y;
    }
    
    public String toString(){
        return "原點:("+x+", "+y+")";
    }
}
package com.mycompany.testseven;

public class Circle extends Shape implements Surfacing{
    protected double r;
    protected final double PI=3.14; 
    
    public Circle(double x,double y,double r){
        super(x,y);
        this.r=r;
    }
    
    public double area(){
        return (r*r*PI);
    }
    
    public String toString(){
        return super.toString()+", 半徑:"+r;
    }
}
package com.mycompany.testseven;
public class Rectangle extends Shape implements Surfacing{
    protected double w,h;
    
    public Rectangle(double x,double y,double w,double h){
        super(x,y);
        this.w=w;
        this.h=h;
    }
    public double area(){
        return (w*h);
    }
    
    public String toString(){
        return super.toString()+", 長:"+w+", 寬:"+h;
    }
}
package com.mycompany.testseven;

interface Surfacing{
    double area();
}

public class testSeven {
    public static void main(String[] args) {
        Rectangle re= new Rectangle(3,4,7,9);
        Circle ci=new Circle(3,4,10);
        
        System.out.println("Rectangle"+re.toString());
        System.out.println("長方形面積:"+re.area());
        System.out.println("Circle"+ci.toString());
        System.out.println("圓形面積:"+ci.area());
    } 
}

實作Surfacing介面。

參考資料:
最新java程式語言第六版


上一篇
繼承(下)
下一篇
內部類別及匿名類別
系列文
大學每日任務:攝取新知識及學習紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言