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();
}