1. 程式人生 > >Abstract與Interface

Abstract與Interface

package mvn.junit.test;

/**
 * 
 * 一、抽象類、抽象方法
抽象方法:類的成員方法,只有宣告,沒有實現,把實現交給子類。

抽象類:含有抽象方法的類。
1.有抽象方法的類一定是抽象類,但抽象類裡可以沒有抽象方法(當然也可以抽象方法+一般方法);

2.抽象類裡可以構造方法,但當其他類繼承(extends)時,子類必須用super() 繼承父類的構造方法;

3.抽象類一旦被繼承,抽象方法在子類必須全部實現(沒有abstract修飾),但是當子類也為抽象類時,父類的抽象方法可以不用實現或者部分實現;

4.抽象類不能被例項(new  物件),只能例項化實現了抽象方法的子類。

 *
 */
public abstract class AbstractDemo {  //繼承(extends)父類只能是單繼承,實現(implements)介面可以是多個。
    int age;  //可以非常量
    String name;
    
    AbstractDemo(){ //可以與構造方法

    }
    AbstractDemo(String name,int age){
        this.name =name;
        this.age=age;
    }
    
    abstract public void printkf();
    
    public static void print(){
        System.out.println("實現抽象的方法");
    };
    
    public static void main(String[] args) {
        print();
    }
}
 

====================================

package mvn.junit.test;

public class TestAbstr extends AbstractDemo {

    TestAbstr(){
        super();
    }
    
    TestAbstr(String s,int a){  
        super(s,a); //呼叫父類構造方法
    }
    
    @Override
    public void printkf() {
        // TODO Auto-generated method stub

    }

    public static void main(String[] args) {
        AbstractDemo d=new TestAbstr("陸立均",1);//把值傳遞給抽象類
        System.out.println("name:"+d.name+" age:"+d.age+"method");//獲取抽象類的屬性
        d.print(); //呼叫抽象類方法
            
    }

}
 

2.inerface

package mvn.junit.test;

/**
 * 二、介面
介面的意義是:所有實現該介面的類看起來都應該是這樣,它提供了一個統一的、通用的呼叫方式,
         儘管各個實現類千差萬別。

1.介面類的所有方法都是抽象方法(和修飾詞abstract沒有一點關係),也就是完全抽象;

2.介面內不能構造方法;

3.介面一旦被實現(implements),介面內的方法必須全部實現(沒有abstract修飾),但是當實現類為抽象類時,介面內的方法可以不實現或者部分實現;

4.介面不能被例項(new  物件),只能例項化實現介面的類。
 
 */
public interface InterfaceDemo {
    int i=0; //將資料定義為static強調只有一份,定義為final,則說明它是一個常量。
    //String n;。
    Integer s=1;  //相當於有final修飾了
    void test();
}