一、为什么要有接口,接口有什么用

  1. 一个类只能继承一个父类,但是可以继承N个接口,所以就可以拥有各个接口的方法
  2. 两者的特性

    二、接口的相关使用方法
    1、接口的定义 ------ interface关键字用来声明一个接口
interface 接口名称{
   // 全局常量,public static final,但书写时可以省略不写
   // 抽象方法,ublic abstract 的
}

如下:

interface Mood{
   int Lowest_value = 0; // 全局常量,  定义心情的最低值
   int Most_value = 100; //全局常量,   定义心情的最高值
   void cheerful();// 抽象方法,   省略了抽象方法前面的public abstract
   void cry(); //抽象方法
}

2、接口的实现 ------ 类使用implements关键字实现接口

class 类名 implements 接口1, 接口2 ... {
  // 重写所引用接口中所有使用的方法
}

如下:

// 接口1:接口的定义,interface使用
interface Animal{
  // 定义接口中的抽象方法
  void eat(); // 省略了抽象方法前面的public abstract
  void drink();
  void play();
  void pleasure();
}
// 接口2:表达情绪的接口,定义接口中的抽象方法,interface使用
interface Mood{
  int Lowest_value = 0; // 全局常量,  定义心情的最低值
  int Most_value = 100; //全局常量,   定义心情的最高值
  void cheerful();// 抽象方法,   省略了抽象方法前面的public abstract
  void cry(); //抽象方法
}
// 类来实现接口,重写所引用接口中所有使用的方法
class Dog implements Animal,Mood{
  public int name;
  public int age;

  public void show(){
  	System.out.println("狗出去玩啦");
  }

  @Override
  public void eat() {

  }

  @Override
  public void drink() {

  }

  @Override
  public void play() {
  	System.out.println("所有的动物都可以去玩了");

  }

  @Override
  public void pleasure() {

  }

  @Override
  public void cheerful() {

  }

  @Override
  public void cry() {

  }
}

3、整体代码如下:

public class InterfaceTest2 {
	public static void main(String[] args) {
		Dog dog1 = new Dog();
		dog1.play();
	}
}

// 接口的定义,interface使用
interface Animal{
	// 定义接口中的抽象方法
	void eat(); // 省略了抽象方法前面的public abstract
	void drink();
	void play();
	void pleasure();
}

// 表达情绪的接口,定义接口中的抽象方法,interface使用
interface Mood{
	int Lowest_value = 0; // 全局常量,  定义心情的最低值
	int Most_value = 100; //全局常量,   定义心情的最高值
	void cheerful();// 抽象方法,   省略了抽象方法前面的public abstract
	void cry(); //抽象方法
}


// 定义类
class Cat{
	public int name;
	public int age;

	public void walk(){
		System.out.println("猫很开心,它自己出去散步啦");
	}
}

class Dog implements Animal,Mood{
	public int name;
	public int age;
	
	public void show(){
		System.out.println("狗出去玩啦");
	}
	@Override
	public void eat() {

	}
	@Override
	public void drink() {

	}
	@Override
	public void play() {
		System.out.println("所有的动物都可以去玩了");

	}
	@Override
	public void pleasure() {

	}
	@Override
	public void cheerful() {

	}
	@Override
	public void cry() {

	}
}

三、接口的继承及多继承 ------ extends
1、一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。
下面的Biology接口被Animal接口继承:

// 定义总的特征,生物Biology
interface Biology{
	String name = "名字";
	void life();
}
// 接口的定义,interface使用,extends Biology,,,子接口Animal继承父接口Biology的方法。
interface Animal extends Biology{
	// 定义接口中的抽象方法
	void eat(); // 省略了抽象方法前面的public abstract
	void drink();
	void play();
	void pleasure();
}

2、当然也有多继承

如:interface Basketball extends Sports, Event

参考:https://www.runoob.com/java/java-interfaces.html.