接口

package ejiekou;

/*
* 定义接口 - public interface A {void m1();}
* 接口内只能出现 - 常量 可简写成 public static final int a
* 抽象方法 可简写成 public abstract void m1();
* 接口间多继承 - interface D extends A,B,C{}
* 非抽象类实现接口,要对接口的方法"实现/重写/覆盖" public class MyClass implements B,C{public void m1(){};}
* 接口的作用:灯泡和灯座,可插拔
*
* * 接口也是一种引用类型,可以等同看做类 * * 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(); //多态
//编译的时候看的是CustomerService接口,但是真正运行是CustomerServiceImpl里面的logout
//编译看左边,运行看右边
//调用 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();
    }

}

 

posted @ 2020-08-13 20:16  Lerresino  阅读(190)  评论(0)    收藏  举报