抽象类和接口的关系:

相同:
  • 都是将共性的东西向上抽取而来的。
不同:
  • 抽象类需要被继承,接口需要被实现。
  • 抽象类只能被单继承,接口可以多实现。
  • 抽象类中可以有抽象和非抽象方法,接口中只能是抽象方法。
  • 抽象类的继承是该体系中基本共性的内容,接口是该体系中额外的功能。


根据上图思路,用以下代码用来测试接口的应用:

class Person{
	String name;
	int age;
	void eat()
	{
		System.out.println("Person can eat");
	}
	void sleep()
	{
		System.out.println("Person can sleep");		
	}
}

abstract class Sportsman extends Person{
//运动员--->Person
	abstract void study();
}

abstract class Coach extends Person{
//教练--->Person
	abstract void teach();	
}

interface A{
//学习英语(接口)
	void LearnEnglish();
}

class BasketballPlayer extends Sportsman{
//篮球运动员--->运动员
	public void study(){
		System.out.println("learn basketball");
	}
	public void LearnEnglish(){
		System.out.println("learn speak English");
	}
}

class BasketballCoach extends Coach{
//篮球教练--->教练
	public void teach(){
		System.out.println("teach basketball");
	}
}

class Interface{
	public static void main(String[] args){
		BasketballPlayer cxk = new BasketballPlayer();
		cxk.study();
		cxk.LearnEnglish();
	}
}

输出结果: