1. 程式人生 > 實用技巧 >工欲善其事必先利其器,何不給IDEA來一次調優呢?

工欲善其事必先利其器,何不給IDEA來一次調優呢?

package ejiekou;

/*
 * 介面也是一種引用型別,可以等同看做類
 * 
 *         1.如何定義介面,語法:
 *             [修飾符] interface 介面名{}
 * 
 *         2.介面中只能出現:常量、抽象方法
 * 
 *         3.介面其實是一個特殊的抽象類,特殊在介面是完全抽象的
 * 
 *         4.介面中沒有構造方法,無法被例項化
 * 
 *         5.介面和介面之間可以多繼承
 * 
 *         6.一個類可以實現多個介面。(這裡的"實現"可以等同看做"繼承")
 * 
 *         7.一個非抽象的類實現介面,需要將介面中所有的方法"實現/重寫/覆蓋"
 
*/ public interface A { //常量(必須用public static final修飾) public static final String SUCCESS = "success"; public static final double PI = 3.14; //public static final是可以省略的 byte MAX_VALUE = 127; //常量 //抽象方法(介面中所有的抽象方法都是public abstract) public abstract void m1(); //public abstract是可以省略的
void m2(); } interface B{ void m1(); } interface C{ void m2(); } interface D{ void m3(); } interface E extends B,C,D{ void m4(); }
package ejiekou;

//implements是實現的意思,是一個關鍵字
//implements和extends意義相同
public class MyClass implements B,C{

    public void m1(){};
    public void
m2(){}; }

package fjiekouzuoyong;

/* 客戶類介面
 * 
 * 介面作用:
 *         1.可以使專案分層,所有層都面向介面開發,開發效率提高了
 *         2.介面使程式碼和程式碼之間的耦合度降低,
 *            就像記憶體條和主機板的關係,變得可插拔”。可以隨意切換
 * 
 * 介面和抽象類都能完成某個功能,優先選擇介面
 * 因為介面可以多實現,多繼承
 * 並且一個類除了實現介面之外,還可以去繼承其他類(保留了類的繼承)
 */
public interface CustomerService {

    //定義一個退出系統的方法
    void logout();
}
package fjiekouzuoyong;

/*
 * 編寫介面的實現類
 * 該類的編寫完全是面向介面去實現的
 */
public class CustomerServiceImpl implements CustomerService{

    //對介面中的抽象方法進行實現
    public void logout(){
        
        System.out.println("成功退出系統!");
    }
}
package fjiekouzuoyong;

public class Test {

    //入口
    public static void main(String[] args) {

        //要執行CustomerServiceImpl中的logout方法
        
        //以下程式面向介面去呼叫
        CustomerService cs = new CustomerServiceImpl(); //多型
        
        //呼叫
        cs.logout();
    }

}

package gjiekouzuoyong;
/*
 * 汽車和發電機之間的介面
 * 
 * 生產汽車的廠家面向介面生產
 * 生產發動機的廠家面向介面生產
 */
public interface Engine {

    //所有發動機都可以啟動
    void start();
}
package gjiekouzuoyong;

public class YAMAHA implements Engine{

    public void start(){
        System.out.println("YAMAHA引擎啟動");
    }
}
package gjiekouzuoyong;

public class HONDA implements Engine {

    public void start(){
        System.out.println("HONDA引擎啟動");
    }
}
package gjiekouzuoyong;

public class Car {

    //成員變數
    //引擎
    //面向介面程式設計
    Engine e;
    
    //構造方法
    Car(Engine e){
        this.e = e;
    }
    
    //汽車應該能夠測試引擎
    public void testEngine(){
        e.start(); //面向介面呼叫
    }
}
package gjiekouzuoyong;

public class Test {

    public static void main(String[] args) {

        //1、生產引擎
        Engine e1 = new YAMAHA(); //多型
        
        //2、生產汽車
        Car c = new Car(e1);
        
        //3、測試引擎
        c.testEngine();
        
        //4、換HONDA
        c.e = new HONDA();
        
        c.testEngine();
    }

}