Java學習第八節 之接口以及簡單工廠方法
一、 抽象類
父類方法前加abstract即可把父類變成抽象類,但是父類的這些方法子類必須重寫纔可調用。
規則:1、不可以創建對象,即new對象;
2、子類繼承抽象類必須重寫抽象方法;
3、若子類不重寫,則可以將其類也變成抽象類。
二、 接口,關鍵字是interface
1、接口即是一個規範,一個規則,裏邊全部都是抽象類。要求子類重寫。
2、Java對比C++:C++是可以實現多重繼承的,而java只能單一繼承,一個類只能有一個父類,但是可以用接口實現多繼承。
3、接口也是父類,但是隻有聲明。裏邊的方法要寫public,即使不寫也要默認爲public,所有方法只能聲明,不能實現。接口也可以聲明常量。
4、需要實現接口方法,必須通過子類重寫。實現關鍵字是implements.
注意:①接口和接口之間可以繼承。
②一個類可以實現多個接口。
③聲明接口,必須應用接口編程。
三、 equals和toString方法
1、equals是一個返回布爾值的方法,它對該類的兩個方法進行比較,看它們是否滿足“等於”的直觀概念。
例如:date1.equals(date2)等價於date2.equals(date1),表示date1和date2中實例對象的比較,如果相同則返回true,否則返回false。
2、toString方法應返回一個代表主叫對象的字符串。如果一個類有一個toString方法,就可以使用該類的一個對象作爲System.out.println和System.out.print方法的自變量,如果其要輸出的不是String類型的話,就會自動調用toString()方法。
例如:System.out.println(date);等同於System.out.println(date.toString());它很容易讓我們把一個對象輸出到屏幕上。
3、instanceof是java、php的一個二元操作符(運算符),和==,>,<是同一類東西,也是java的保留關鍵字。它的作用是判斷其左邊對象是否爲右邊類的實例。它是通過返回個布爾值來指出。
例如:(說明A是一個定義好的對象類,a是一個變量,result是布爾類型)
result = ainstanceof A;
四、簡單工廠法。
代碼實現:
interface saler
{
public void sale();
public void back();
}
//飛機售票員1
class saler1 implements saler{
public void sale(){
System.out.println("sale");
}
public void back(){
System.out.println("back");
}
}
//火車售票員2
class saler2 implements saler{
public void sale(){
System.out.println("sale");
}
public void back(){
System.out.println("back");
}
}
//汽車售票員3
class saler3 implements saler{
public void sale(){
System.out.println("sale");
}
public void back(){
System.out.println("back");
}
}
//新增高鐵售票員4
class saler4 implements saler{
public void sale(){
System.out.println("sale");
}
public void back(){
System.out.println("back");
}
}
//工廠類
class factory{
static saler name(String type){
if(type.equals("plane")){
return new saler1();
}else if(type.equals("train")){
return new saler2();
}else if(type.equals("bus")){
return new saler3();
}else if(type.equals("高鐵")){
return new saler4();
} else{
return null;
}
}
}
//主方法類
public class sale1{
public static void main(String[] args){
saler s=factory.name("plane");
s.sale();
s.back();
salers1=factory.name("train");
s1.sale();
s1.back();
salers2=factory.name("bus");
s2.sale();
s2.back();
salers3=factory.name("高鐵");
s3.sale();
s3.back();
}
}