接口

通过interface关键字定义接口
类通过implements实现接口
接口不能够实例化
接口中全部都是形象办法
接口中的形象办法能够省略public abstract关键字
实现类必须实现接口中的全副形象办法
要么它就是一个抽象类
在jdk1.8里容许接口中呈现一般办法,要求被static或者default润饰

    //    static public void hi() {}    //    default public void hi() {}
public class Test1_Interface {    public static void main(String[] args) {        // TODO Auto-generated method stub        Demo  demo=new DemoImpl();        demo.eat();        demo.game();            }}interface Demo{    void eat();    void game();}class DemoImpl implements Demo{    @Override    public void eat() {        // TODO Auto-generated method stub        System.out.println("eat()...");    }    @Override    public void game() {        // TODO Auto-generated method stub        System.out.println("game()...");    }    }

接口的用法

接口里没有构造方法/没有变量都是常量
接口里都是形象办法(jdk1.8能够有非凡的一般办法)
接口里的常量能够简写,会主动拼接public static final
接口里的办法能够简写,会主动拼接public abstract

public class Test2_Interface2 {    public static void main(String[] args) {        // TODO Auto-generated method stub        Inter in=new InterImpl();        System.out.println(in.age);        System.out.println( Inter.age );//获取值,age是static的                //TODO 7,测试接口里的办法        String desc = in.save();        System.out.println(desc);                in.delete(10);    }}interface Inter{    int age=40;    String save();    void delete(int id);}class InterImpl implements Inter{    @Override    public String save() {        // TODO Auto-generated method stub        return "success";    }    @Override    public void delete(int id) {        // TODO Auto-generated method stub        System.out.println("delete()..."+id);    }    }

接口的简单用法

接口能够多继承,
实现类和接口能够多实现

public class Test3_Interface3 {    public static void main(String[] args) {        //4,--2号接口的性能,接口那么多,想用谁的性能,右边就写谁        Inter2 in = new Inter2Impl() ;        in.update();        in.save();        in.delete(5);        in.get();    }}    interface Inter1{    void save();}interface Inter3{    void update();    void get();}//5,实现类能够在继承的同时,多实现abstract class Impl2 extends Object implements Inter1 , Inter3{    }//3,接口和实现类之间 -- 是实现关系 ,能够多实现(逗号隔开)//--Impl实现类,同时实现了Inter1和Inter3接口的性能,//--须要同时重写多个形象办法,否则就是一个抽象类class Impl implements Inter1 , Inter3{    @Override    public void update() {    }    @Override    public void get() {    }    @Override    public void save() {    }}//1,接口和接口之间 -- 是继承关系,能够多继承(逗号隔开)//--2号接口同时应用了1号和3号接口的性能! interface Inter2 extends Inter1 , Inter3{    void delete(int id) ;}//2,想要应用2号接口的性能,找一个实现类来实现接口class Inter2Impl implements Inter2{    @Override    public void save() {        System.out.println(1);    }    @Override    public void update() {        System.out.println(2);    }    @Override    public void get() {        System.out.println(3);    }    @Override    public void delete(int id) {        System.out.println(4);    }}

四,接口和抽象类的区别

--1,类和类间的关系:是继承关系    --java里只反对单根继承    --class A extends B    --其中A是子类,B是父类.子类能够应用父类的所有性能    --办法的重写override:如果想要批改父类的原有性能,能够进行办法重写--2,接口和接口间的关系:是继承关系    --接口的呈现就是为了冲破java单继承的局限性    --接口间能够多继承    --interface A extends B , C    --其中A是子接口,B和C是父接口                --A就领有了B和C的所有性能,A的性能是最全的    --class Impl implements A    --Impl实现类就须要同时重写A B C 接口里的所有形象办法,否则就是一个抽象类--3,类和接口间的关系:是实现关系    --实现类能够实现接口,而且能够多实现    --class A implements B,C    --A是实现类,B和C是接口.    --A须要同时重写B和C接口里的所有形象办法,否则就是一个抽象类    --类能够在继承的同时多实现    --class A extends B implements C , D    --A能够叫子类,也能够叫是实现类    --A同时领有父类B的性能,也同时领有接口C和D的性能    --A须要同时重写C和D接口里的所有形象办法,否则就是一个抽象类    --对于父类B里的办法吗?看需要,B类是父类,外面如果都是一般办法,只有须要批改才会产生重写.    --4,抽象类和接口的区别    --相同点        --抽象类和接口都是形象层,个别用来提取共性        --都不能被实例化    --不同点        --构造方法:抽象类里有,接口里没有!!        --成员变量:抽象类里有,接口里没有,接口里都是常量!!        --成员办法:抽象类类能够有一般办法和形象办法,然而接口里都是形象办法(1.8后能够有)        --接口里存在简写模式,抽象类里没有.        --接口里的常量,int age = 10;会为常量主动拼接public static final        --接口里的办法,void save();会为办法主动拼接public abstract        --怎么去设计你的形象层,到底是体现为一个抽象类呢还是接口呢?            --要害就看你需不需要提供办法体,如果类里的办法都不须要提供办法体,能够设计为接口.如果类里的办法须要提供办法,设计为抽象类.        --形象层到底设计成抽象类还是接口,谁好呢?            --如果实现类想要同时领有多个性能,最好抉择接口,因为接口能够多继承多实现            --如果就是设计为抽象类,子类就只能继承一个父类,只有这么一次的继承权

五,程序设计:

--需要:    具体事物:培优班老师,高手班老师    共性:备课 / 讲课    测试:创立多态对象测试--利用面向接口编程的思维实现:
public class Test4_Design {    public static void main(String[] args) {        Teacher cgb=new cgbteacher();        cgb.ready();        cgb.teach();    }}interface Teacher{    void ready();    void teach();}class cgbteacher implements Teacher{    @Override    public void ready() {        // TODO Auto-generated method stub        System.out.println("培优班老师正在 备课");    }    @Override    public void teach() {        // TODO Auto-generated method stub        System.out.println("培优班老师正在 讲课");    }    }abstract class actteacher implements Teacher{    }