java——類——interface

interface

interface可理解爲特殊abstract class,但相比abstract class,有以下區別:
  • interface是完全abstract class,所有method默認都爲abstract method(可顯式使用abstract指定),且默認訪問權限爲public(若顯式指定訪問權限,也只能使用public)
  • interface是純粹abstract class,純接口class,不允許有non-static數據成員
  • interface所有method都爲abstract method,因此interface允許多重繼承,interface繼承本質就是abstract method(接口)的set union操作
  • interface不允許有non-static數據成員,因此class允許多重繼承(實現)interface,不會有c++中的多份數據衝突
interface Jumpable
{
    void jump();
}

interface Swimable
{
    void swim();
}

interface Flyable
{
    void fly();
}

interface Actions extends Jumpable, Swimable, Flyable
{
}

class Animal
{
}

class Fish extends Animal implements Swimable
{
    public void swim()
    {
    	System.out.println("Fish.swim()");  
    }
}

class Frog extends Animal implements Jumpable, Swimable
{
    public void jump()
    {
    	System.out.println("Frog.jump()");  
    }
	
    public void swim()
    {
    	System.out.println("Frog.swim()");  
    }
}

interface的類作用域

interface作爲特殊abstract class,自然也屬於class,而class有其自身類作用域,因此允許在interface中定義static成員(static數據成員和static方法成員)
  • static數據成員:interface中定義數據成員默認爲public final static(若顯式指定也只能使用public&final&static組合),final修飾static數據成員,因此不允許blank final
  • static方法成員:static方法成員必須實現
interface Jumpable
{
    abstract void jump();
    
    int jSpeed = 5;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章