java基础(接口)

1.接口的基本概念

  • 抽象方法和常量值得集合。从本质上讲,接口是一种特殊的抽象类。
  • 格式:
[public] interface 接口名 [extends superinterfaceList]
{
    //定义常量和方法
}

2.接口的知识点

  • 接口中的属性成员必须是public static final 类型的,方法成员必须是public abstract类型的(抽象方法)。定义时可以部分省略或全部省略,默认为上述的类型。

  • 一个类不能继承接口,只能实现接口(使用implements关键字)。类继承类,接口继承接口。

  • 接口允许多继承。

  • 接口中定义的属性成员的值不能在实现类中更改。(属性成员为final类型不允许更改)

  • 如果实现类只实现了接口的部分方法,则该类必须声明为abstract类型。

interface A 
{
    public static final int i = 1;
    public abstract void f();
    int j = 2;    //默认为public static final类型
    void g();    //默认为public abstract类型
}

abstract class B implements A   //如果不重写接口的所有抽象方法必须声明为abstract类型
{
    
}
  • 一个类可以继承一个父类的同时实现多个接口,但extends须放在implements前面。
interface A 
{   
}

interface B 
{   
}

class C 
{   
}

class D extends C implements A, B
{
    
}
  • 接口不能实例化,但能定义一个接口引用类型的变量,并将其指向实现接口的对象,达到多态的目的。
interface A 
{
    void f();
}

class B implements A 
{
    public void f() //必须加public,f()是public类型,重写类型必须相同
    {
        System.out.println("嘿嘿");
    }
    void g()
    {
        System.out.println("哈哈");
    }
}


class Test
{
    public static void main(String[] args)
    {
        A a1;
        //A a2 = new A();  //error 接口不能实例化
        a1 = new B();
        
        a1.f();
        //a1.g();   //error 不能调用子类独有的方法
    }
}

3.接口的作用

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

4.接口与抽象类的区别

  • 接口中的方法一定是抽象方法,抽象类中的方法可以不是抽象方法。
  • 类不允许多继承,接口允许多继承。

你可能感兴趣的:(java基础(接口))