上一节:
下一节:

  Java 接口

  • Java 接口

    在Java中实现抽象的另一种方法是使用接口。一个接口是一个完全“抽象类”,用于将具有空主体的相关方法分组:
    // interface
    interface Animal {
      public void animalSound(); // interface method (does not have a body)
      public void run(); // interface method (does not have a body)
    }
    要访问接口方法,该接口必须由另一个类使用 implements 关键字(而不是extends)“实现”(有点像继承的)。接口方法的主体由“implement”的类提供:
    // 接口
    interface Animal {
      public void animalSound(); // 接口方法 (没有方法体)
      public void sleep(); //  // 接口方法 (没有方法体)
    }
    
    // Pig "实现" the Animal 接口
    class Pig implements Animal {
      public void animalSound() {
        // The body of animalSound() is provided here
        System.out.println("The pig says: wee wee");
      }
      public void sleep() {
        // The body of sleep() is provided here
        System.out.println("Zzz");
      }
    }
    
    class MyMainClass {
      public static void main(String[] args) {
        Pig myPig = new Pig();  // Create a Pig object
        myPig.animalSound();
        myPig.sleep();
      }
    }
    尝试一下
    接口注意事项:
    • 与抽象类一样,接口不能用于创建对象(在上面的示例中,无法在MyMainClass中创建“Animal”对象)
    • 接口方法没有主体- 主体由“实现”类提供
    • 在实现接口时,必须重写其所有方法
    • 接口中的方法在默认情况下abstractpublic
    • 接口属性默认情况下publicstaticfinal
    • 接口不能包含构造函数(因为它不能用于创建对象)
    为什么以及何时使用接口?
    1. 为了获得安全性- 隐藏某些细节,仅显示对象(接口)的重要细节。
    2. Java不支持“多重继承”(一个类只能从一个超类继承)。但是,可以使用接口来实现,因为该类可以实现多个接口。
    注意:要实现多个接口,请用逗号分隔它们(请参见下面的示例)。
    要实现多个接口,请用逗号分隔它们:
    interface FirstInterface {
      public void myMethod(); // interface method
    }
    
    interface SecondInterface {
      public void myOtherMethod(); // interface method
    }
    
    class DemoClass implements FirstInterface, SecondInterface {
      public void myMethod() {
        System.out.println("Some text..");
      }
      public void myOtherMethod() {
        System.out.println("Some other text...");
      }
    }
    
    class MyMainClass {
      public static void main(String[] args) {
        DemoClass myObj = new DemoClass();
        myObj.myMethod();
        myObj.myOtherMethod();
      }
    }
    尝试一下
上一节:
下一节: