接口
在面向对象中,java只能单根,没有c++的多继承。虽然这样会减少错误的发生,但是在继承上也导致了很多功能实现很麻烦,接口的出现就很好的解决了这个问题,而且更方便。
在接口中全部都是抽象方法,不能实例化。类不能实例化,只能实现接口定义的方法。
接口的特点 接口可以有任意数量的方法
接口不能被实例化
接口不能包含构造器
接口的方法都是抽象的
接口中不能包含实例成员变量
接口不能被继承,只能被实现
一个接口可以继承多个接口
接口是由interface关键字定义,只能拥有公共的静态常量和抽象方法,没有构造方法,能够多重实现.使用关键字implements来实现接口
接口不是类,虽然接口类似于一个类,但是概念不同。类描述了对象的属性和行为,而接口包含了一个类需要实现的行为。
接口的优点最大的作用就是扩展性,还可以将类和实现分离,规范子类。
例:
比如说有3个翻译员,A会翻译英语和法语,B个会只会英语,C英语、法语、日语都会。如果我们把翻译的3个语言的行为都定义为父类的话,子类翻译员都继承父类的行为,虽然我们可以不重写,但是这在理论上来说是不合理的。在这种情况下就可以使用接口来实现了。
创建一个父类翻译官Y,和3个接口,分别是翻译英语、法语和日语,还有3个子类分别代表3个翻译人员,如果是A的话就直接实现英语和法语的接口,B的话实现英语接口,C3个都实现。
接口的定义方法 public interface 接口名()。例如翻译英语接口 public interface IEnglish{ //可以在接口名前加个I,表示是个接口
public void english(); //这里public可以省略,默认也是公共的
}
接口的实现方法 public class 类名 extends 父类名 implements 接口名
例如B翻译员的类 public class B extends Y implements French(){ //如果要实现多个接口,只需要在接口名后面加逗号再写上接口名
public void french(){ //实现接口
System.out.println("我会翻译法语");
}
}