二.Java 中的接口

1.接口的规则如下:

  • 1)接口是特殊的抽象类。在一个接口中,其中的所有方法都是抽象的
  • 2)接口中的方法默认用public abstract修饰;接口中的变量默认都是public abstract final修饰
  • 3)接口中不可以有普通的方法
  • 4)Java不支持多继承,但支持多实现。即一个类只能有一个父类,但是可以有很多不同的接口
  • 5)接口可以继承接口,使用extends,注意啊,这里不是使用implements!!!!
  • 6)抽象类可以实现接口,使用implements

2.代码如下:

  • 示例1
package grammer.Implements;

public interface Eat {
    public abstract void eat();
}
package grammer.Implements;

public interface Run {
    public abstract void run();
}

Modifier 'public' and 'abstract' are redundant for interface methods所以最好的代码应该是下面这个样子:

package grammer.Implements;
public interface Eat {
    void eat();
}
package grammer.Implements;
public interface Run {
    void run();
}

Java虽然不支持多继承【一个类只能继承一个类,但是可以多层继承】,但是支持多实现。【一个类可以实现多个接口】

package grammer.Implements;

public class Cat implements Eat,Run {
    public void eat() {
        System.out.println("I like eating fishes!");
    }

    public void run() {
        System.out.println("I run fast!");
    }

    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.eat();
        cat.run();
    }
}
  • 示例2
package liu.shen.test;
interface People{
    //int age;
    //Error --> The blank final field name may not have been initialized
    //因为接口中的成员变量都是默认public static final修饰,所以必须初始化。
    void sleep();//休息
    void eat();//吃
    void struggle();//奋斗
}
abstract class Student implements People{//定义个抽象类Student实现接口People
}

public class Senior extends Student
{
    public static void main(String[] args){ 
        Senior se = new Senior();
        se.sleep();
    }

    @Override
    public void sleep() {
        // TODO Auto-generated method stub

    }

    @Override
    public void eat() {
        // TODO Auto-generated method stub

    }

    @Override
    public void struggle() {
        // TODO Auto-generated method stub

    }
}