Java 接口

  • Java只支持单继承,如果我们想封装现实生活中的多继承现象借口可以帮助我们。
  • 接口是抽象方法和常量值的集合。
  • 从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
  • 接口定义举例
public interface Runner
{
    public static final int id = 1;
    
    public void start();   //不用写abstract
    public void run();
    public void stop();
}

接口特性


  • 接口可以多重实现。
  • 接口中声明的属性默认为public static final的,也只能是public static final的。解决C++中多继承出现的问题。
  • 接口中只能定义抽象方法,而且这些方法默认为public,也只能时public的。
  • 接口可以实现其它的接口,添加新的属性和方法。
  • 类可以实现接口通过implements语句,相当于继承。有了重写和继承,如果有interface这个成员变量指向子类对象,就可以实现多态。
  • 多个无关的类可以实现同一个接口。
  • 一个类可以实现多个无关的接口。多继承。
  • 使用什么接口只能看得到它包含的方法
  • 接口的引用可以指向所有实现了该接口的类对象。下面例子的Teacher,如果用Painter指向,只能看到paint和eat方法,如果用Singer指向,只能看到sing和sleep方法,相当于换了一个窗口来看Teacher。
  • 例子说明
interface Singer
{
	public void sing();
	public void sleep();
}
interface Painter
{
	public void paint();
	public void eat();
}
class Student implements Singer
{
	private String name;
	Student(String name)
	{
		this.name = name;
	}
	public void study()
	{
		System.out.println("studing");
	}
	public String getName()
	{
		return name;
	}
	public void sing()
	{
		System.out.println("student is singing");
	}
	public void sleep()
	{
		System.out.println("student is sleeping");
	}
}
class Teacher implements Singer,Painter  //相当于多继承
{
	private String name;
	Teacher(String name)
	{
		this.name = name;
	}
	public void teach()
	{
		System.out.println("teaching");
	}
	public void sing()
	{
		System.out.println("teacher is singing");
	}
	public void sleep()
	{
		System.out.println("teacher is sleeping");
	}
	public void paint()
	{
		System.out.println("teacher is painting");
	}
	public void eat()
	{
		System.out.println("teacher is eating");
	}
}
public class Main
{
	public static void main(String args[])
	{
		Singer s1 = new Student("le");
		s1.sing();s1.sleep();   //多态存在
		Singer s2 = new Teacher("steven");
		s1.sing();s1.sleep();   //多态存在
		Painter p1 = (Painter)s2;
		p1.paint();p1.eat();    //多态存在
	}
}
输出结果:
student is singing
student is sleeping
student is singing
student is sleeping
teacher is painting
teacher is eating
原文地址:https://www.cnblogs.com/031602523liu/p/8654193.html