11.接口

    格式:

        interface 接口名{}

    接口中的成员修饰符是固定的。

        成员常量:public static final

        成员函数:public abstract

    发现接口中的成员都是public的。

    接口的出现将“多继承”通过另一种形式体现出来,即“多实现”。


如果一个抽象类的方法都是抽象的,这时可以将抽象类用另一种形式来体现。就是接口。 

interface InterDemo
{
    public static final int X = 3;  
    // public static final 可以不写,因为接口会帮你加上。
     
    public abstract void method1();
    public abstract void method2();
}
 
class Demo implements/*实现*/ InterDemo
{
    public void method1(){
    
    }
    public void method2(){
    
    }
}


为什么能多实现?

接口中没有主体方法,不会产生调用方法的不确定性。

多实现的好处:

可以扩展一个类的功能。


接口的好处:是将多继承进行改良,用多实现进行体现。

1. 一个类只能继承一个类,

    但是一个类可以实现多个接口。class Demo implements DemoA,DemoB

2. 另一个体现。

    一个类在继承另一个类的同时,还可以实现多接口。

    接口的出现避免了单继承的局限性。

class Demo extends DemoC implements DemoA, DemoB


    抽象类不能创建对象,接口不能创建对象,抽象类的子类必须覆盖了父类中所有的抽象方法后,才能创建对象。

    但是多层继承后,只要最底层的子类能覆盖前辈的抽象方法,底层子类就可以创建对象。实现接口的类,必须覆盖接口中所有的抽象方法。


    接口之间存在着多继承。类之间不支持多继承是因为父类中方法主体不同而导致调用方法的不确定性,而接口中的方法是没有主体的,所以多继承没有关系


但是,下面的情况式不允许的。C调用show(), 返回值类型就会不确定。所以返回值应该相同

interface A
{
    int show();  
}
interface B
{
    boolean show();  //改为 int show();
}
interface C extends B,A  
{
}

 

/*

抽象类中没有抽象方法的举例。

*/

interface Inter
{
public void method1();
public void method2();
public void method3();
}
//没有抽象方法的抽象类。直接创建一个类,将接口中的抽象方法全覆盖,其他类想使用接口中的方法的时候可以直接继承这个类。因为这个类中的主体方法为空,所以不用创建对象,直接将该类抽象。
abstract class Test implements Inter
{
public void method1()
{
}
public void method2()
{
}
public void method3()
{
}
}
 
class Test1 extends Test
{
public void method1()
{
System.out.println("test1,method1 run);
}
}
 
class Test2 extends Test
{
public void method2()
{
System.out.println("test2,method2 run);
}
}
 
/*
class Test1 implements Inter
{
public void method1()
{
System.out.println("test1,method1 run);
}
public void method2()
{
}
public void method3()
{
}
}
 
 
class Test2 implements Inter
{
public void method1()
{
}
public void method2()
{
System.out.println("test2,method2 run);
}
public void method3()
{
}
}
*/

 



12.接口特点

    1.对外暴露的规则。

    2.程序的功能扩展。

    3.降低耦合性。

    4.可以用来多实现。

    5.类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。

    6.接口与接口之间可以有继承关系。

    

13.接口和抽象类

    共  性:都是不断抽取出来的抽象的概念

    

    区别 1:抽象类体现继承关系,一个类只能单继承

            接口体现实现关系,一个类可以多实现

    区别 2:抽象类是继承,是 "is a "关系

            接口是实现,是 "like a"关系

    区别 3:抽象类中可以定义非抽象方法,供子类直接使用

            接口的方法都是抽象,接口中的成员都有固定修饰符