Java 接口、接口的实现,以及同继承的区别详解
接口
什么是接口? 当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用另一种形式定义和表示,就是接口interface
定义接口使用的关键字不是class,是interface.
对于接口当中常见的成员:而且这些成员都有固定的修饰符
1、全局常量:public static final
2、抽象方法: public abstract
由此得出结论,接口中的成员都是公共的权限。
interface Demo 
{
    public static final int Num=4;
    public abstract void show1()'
    public abstract void show2(); 
    /*
    public static final 、public abstract 可以省略,在接口里你没写程序会自动帮你添加
    但是最好要写,省略的话可读性极差!!!
    */
}类与类之间是继承关系,类与接口是实现关系
实现是接口有的,都得覆盖,继承是父类有的,可以拿来用,也可覆盖某些方法。
接口不可以实例化,只能由实现了接口的子类并覆盖了接口中所有的抽象方法后,该子类才可以实例化。
否则,这个子类就是一个抽象类。
class DemoImpl implements /*实现*/ Demo 
{
    public void show1(){}
    public void show2(){}
}class InterfaceDemo
{
    public static void main (String[] args)
{
    DemoImpl d = new  DemoImpl();
    System.out.println(d.Num);
    System.out.println(DemoImpl.Num);
    System.out.println(Demo.Num);   
}
}在Java 中不直接支持多继承,因为会出现调用的不确定性。
所以java将多继承机制进行改良,在Java中变成了多实现。
一个类可以实现多接口
多实现是怎么体现的?
interface A
{
    public void show();
}
interface Z 
{
    public void show();
    public int add(int a,int b);
}
class Test implements A,Z//多实现
{
    public void show(){}
    public int add(int a,int b)
{
       return a+b+3;
}
}一个类在继承另一个类的同时,还可以实现多个接口
class Q
{
    public void method()
    {}
}
class Test2 extends Q implements A,Z
{
    实现...
}接口的出现,避免了单继承的局限性。因为一个类只能有一个父类,但是可以有多个接口,想要对其功能进行扩展,可以用接口。
类与类之间继承关系,类与接口之间实现关系。接口与接口之间继承关系(可以进行多继承)。
interface CC
{
    void show();
}
interface MM 
{
    void method();
}
interface QQ extend CC ,MM
{
    void function();
}
class WW implements QQ
{
    void show(){}
    void method(){}
    void function(){}
}接口是对外暴露的规则、是程序的功能扩展,接口的出现降低耦合性、可以用来多实现
抽象类和接口的异同点
相同点 :
都是不断向上抽取而来的
不同点:
1、抽象类需要被继承,而且只能单继承。接口需要被实现,而且可以多实现。
2、抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象方法。
接口中只能定义抽象方法,必须由子类去实现。
3、抽象类的继承是 is a 关系(这个类哪一类) ,在定义该体系的基本共性内容。
接口的实现是like a 关系(这个类像哪种) ,在定义体系额外功能。
abstract  class 犬 
{
    abstract void 吼叫();
}
interface 导盲
{
    abstract void 导盲();
}
class 导盲犬 extends 犬 implements 导盲
{
    public void 吼叫 ()
{
}
    public void 导盲(){}
}
    我想给她买兰博基尼
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号