Java-hb-36接口

1、定义

  • 接口的定义:就是抽象方法和常量值的集合。从本质上讲,接口就是一种特殊的抽象类。
  • 接口的格式
[public] interface interfacename [extends SuperInterfaceList]{//可继承多个接口
    [public static final] int i = 20;
    [public abstract] void f();
    ...... //常量定义和方法定义
}
  • 接口中定义的属性【必须】是public static final
    方法必须是public abstract,可省略
  • 接口可继承接口


2、实现

类可以实现接口,并可重写方法,重写必须加public

interface It{
    int i = 20;
    void f();
}
abstract class A implements It{ //把接口中的成员包含到类A中
    public void f(){//重写必须加public
        System.out.printf("i = %d\n",i);
    }  
}

继承放前面,实现接口放后面,例如:

class T extends A implements It4,It3{

}


3、初始值问题

class A{
    int i;

    public void show(){
        System.out.printf("show-> %d\n",i);  //i是属性i,此时的i等价于this.i
    }

    public void f(){
        int i;  //这里的i和属性i没有冲突
        System.out.printf("f-> %d\n",i);  //error 因为i是局部变量,使用时必须初始化
    }

    public void g(int i){ //i是形参i,形参i也是局部变量
        this .i = i;
        System.out.printf("g-> %d\n",i);
    }
}


4、多态

interface It{
    void f();
}
class A implements It{
    public void f(){
        System.out.printf("AAAA\n");
    }
}

class D{
    public static void main(String[] args) {
        It it;
        it = new A();
        it.f();//输出:AAAA
        it.g();//error
    }
} 
  • 把一个接口(抽象的),可以定义一个实现该接口的对象(new A()),把对象的地址发送给接口的引用,通过接口的引用可以调用这个接口指向的那个真正的对象(A)中的那些成员。
  • 通过接口的引用只能调用子类( A )从父类( It )继承过来的成员( f() ),不能调用子类所特有的( g() )。


5、接口的作用

  • 通过接口可以实现不相关类的相同行为
      如:Java规定所有可以完成自我复制功能的类都必须实现java.lang.Colneable接口,但该接口却是空的,没有任何内容,目的只是为了起个标志作用。
  • 接口提供了不同对象进行协作的平台
      如事件处理
  • 接口可以实现多继承,从一定程度上弥补了类只能单继承的缺陷。
  • 接口使我们了解一个类的功能的重要途径。
      如:Java整个容器框架就是以接口的方式建立起来的,实现不同接口的类完成的是不同的功能,接口是我们了解一个类功能的重要途径。

猜你喜欢

转载自www.cnblogs.com/aabyss/p/12317460.html
36