Java继承同时接口的实现: 代码如下 interface Achievement {	public float avarage(); } class Person {	String name;	int age;	public Person(String newName,int newAge)	{	name = newName;	age = new...
Java继承同时接口的实现:
代码如下
interfaceAchievement{publicfloatavarage();}classPerson{ String name;int age;publicPerson(String newName,int newAge){ name= newName; age= newAge;}publicvoidintroduce(){ System.out.println("你好,我是"+name+",今年"+age+"岁");}}classStudentextendsPersonimplementsAchievement//实现继承同时接口,多接口时用逗号隔开接口名{int chinese;int math;int english;publicStudent(String newName,int newAge){super(newName,newAge);//继承使用Person的方法}publicvoidsetScore(int c,int m,int e){ chinese=c; math=m; english=e;}publicfloatavarage(){return(chinese+math+english)/3;}}classJieKou{publicstaticvoidmain(String[] args){ Student s1=newStudent("张三",16); s1.introduce(); s1.setScore(80,90,80); System.out.println("我的平均分是"+s1.avarage());}}
Java的接口有继承和实现两个概念,接口可以继承另一个接口,并获得其父接口里的所有方法和成员变量,接口也可以被一个类实现,实现接口的类需要实现接口及其父接口里的所有抽象方法,怎么理解呢? (1)如果...
Java的接口有继承和实现两个概念,接口可以继承另一个接口,并获得其父接口里的所有方法和成员变量,接口也可以被一个类实现,实现接口的类需要实现接口及其父接口里的所有抽象方法,怎么理解呢?
(1)如果接口A继承了接口B,那么接口A就继承了接口B的所有抽象方法;
(2)当一个类C实现接口A的时候,就需要实现接口A和接口B的全部抽象方法;(为什么不说全部方法,要加上“抽象”这个定语?因为Jdk1.8增加了default关键字,允许接口里有非抽象方法存在了,这些非抽象方法可以不被接口的实现类实现,这就是另外的问题了,这里不详细展开了,又兴趣可以自行参看相关文档);
(3)当一个类D实现接口B的时候,只要实现接口B的抽象方法就好了。
这里需要补充一下,为什么类不可以多继承,而接口却可以?
类只能单继承,也就是说一个类只能有一个父类,这是因为如果一个子类A继承了父类B和父类C,当父类B和父类C中有一个名字相同并且参数列表相同的方法时,类A就会产生混淆,所以只能单继承,单继承有时候会限制类的扩展性;
接口却可以实现多继承,因为接口里的方法都是抽象方法(default修饰的非抽象方法除外,这些非抽象方法会带来混淆,这里暂不讨论),并没有具体的方法体,只有接口的实现类提供了方法的实现,所以不会产生混淆。
接口支持多继承,一个接口可以有多个父接口,子接口扩展某个父接口,将会获得父接口里定义的所有抽象方法、常量。 一个接口继承多个父接口时,多个父接口排在extends关键字之后。 2代码 interface interfaceA { ...
一接口的继承
1点睛
接口支持多继承,一个接口可以有多个父接口,子接口扩展某个父接口,将会获得父接口里定义的所有抽象方法、常量。
一个接口继承多个父接口时,多个父接口排在extends关键字之后。
2代码
interface interfaceA { int PROP_A = 5; void testA(); } interface interfaceB { int PROP_B = 6; void testB(); } interface interfaceC extends interfaceA, interfaceB { int PROP_C = 7; void testC(); } public class InterfaceExtendsTest { public static void main(String[] args) { System.out.println(interfaceC.PROP_A); System.out.println(interfaceC.PROP_B); System.out.println(interfaceC.PROP_C); } }
3运行
4说明
interfaceC接口继承了interfaceA和interfaceB,所以interfaceC中获得了它们的常量,因此在main()方法中看到通过interfaceC来访问PROP_A、PROP_B、PROP_C常量。
二使用接口
1点睛
接口不能用于创建实例,但接口可以用于声明引用类型变量。但这个引用类型的变量必须引用到其实现类的对象。接口的主要用途就是被实现类实现。接口主要有如下用途。
定义变量,也可用于进行强制类型转换。
调用接口中定义的常量。
被其他类实现。
一个类可以实现一个或多个接口,继承使用extends关键字,实现则使用implements关键字。