一、接口概述
接口是比抽象更高的抽象,它是一个完全抽象的类,即抽象方法的集合。接口使用关键字interface来声明。
二、接口定义的结构
[修饰符] interface 接口名称{
抽象方法1;
抽象方法2;
}
举例:定义一个Country接口,有一个国籍nationality属性和一个speak方法
interface 接口名称 // 定义抽象类 { final 数据类型 成员名称 = 常量; //数据成员必须赋初值 abstract 返回值的数据类型 方法名称(参数...); //抽象方法,注意在抽象方法里,没有定义方法主体 }
关于接口定义的注意事项:
-
接口中也有变量,但是接口会隐匿地指定为public static final变量
-
接口中的抽象方法具有public和abstract修饰符,也只能是这两个修饰符,其他修饰符都会报错 -
-
抽象类之间可以继承,同样的,接口之间也可以继承。接口之间继承时,使用的关键字同样为 extends
-
接口里的“抽象方法”只要做声明即可,而不用定义其处理的方式;
-
数据成员必须赋初值
三、接口的实现
当类实现接口的时候,类要实现接口中的所有方法,否则类必须声明为抽象类。类使用关键字implements关键字实现接口。
举例:
注意:
- 接口无法直接实例化,接口是通过类来实现的implements
- 一个类可以实现多个接口,接口间用逗号分隔
- 如果实现某接口的类不是抽象类,则该类必须实现指定接口的所有抽象方法
- 抽象类也可以实现接口(举例)implements
- 接口这间可以多继承 例如:
*接口之间称为继承extends , 抽象类对接口的关系是实现implements 类与接口的关系也是实现implements
interface IA{ void ma(); } interface IB{ void mb(); } interface IC extends IA, IB{ //IC 同时继承 IA 和 IB 两个接口 void mc(); }
四、接口与抽象类
1.接口与抽象类的相同点
都可以被继承
都不能被直接实例化
都可以包含抽象方法
派生类必须实现未实现的方法
2.接口与抽象类的不同点
接口支持多继承,抽象类不能实现多继承
一个类只能继承一个抽象类,但可以实现多个接口
接口中的成员变量只能用publci static final类型的,抽象类中的成员变量可以是各种类型的
接口只能定义抽象方法;抽象类既可以定义抽象方法,也可以定义普通方法
接口中不能含有静态代码块以及静态方法,抽象类可以有静态代码块和静态方法
五.练习题了解
package zhou; public interface interfaceA { public abstract String shi(); public abstract String shu(); } class Student implements interfaceA{ private String eatery; private String dorm; Student(String eatery,String dorm){ this.eatery=eatery; this.dorm=dorm; } public String shi() { return "食堂"+eatery; } public String shu() { return "宿舍"+dorm; } } class Teacher implements interfaceA { private String teachereatery; private String schoolflat; Teacher(String teachereatery,String schoolflat){ this.teachereatery=teachereatery; this.schoolflat=schoolflat; } public String shi() { return "教师食堂"+teachereatery; } public String shu() { return "学校公寓"+schoolflat; } } class ParentsofStudents implements interfaceA{ private String resthouse; ParentsofStudents(String resthouse){ this.resthouse=resthouse; } public String shi() { return "招待所"+resthouse; } public String shu() { return "招待所"+resthouse; } } public class Hong { public static void main(String[] args) { Student s=new Student(null, null); s.shi(); s.shu(); Teacher t=new Teacher(null, null); t.shi(); t.shu(); ParentsofStudents j=new ParentsofStudents(null); j.shi(); j.shu(); } }
六.接口的扩展
接口是Java实现多继承的一种机制,一个类只能继承一个父类,但如果需要一个类继承多个抽象方法的话,就明显无法实现,所以就出现了接口的概念。一个类只可以继承一个父类,但却可以实现多个接口。
接口与一般类一样,均可通过扩展的技术来派生出新的接口。原来的接口称为基本接口或父接口,派生出的接口称为派生接口或子接口。通过这种机制,派生接口不仅可以保留父接口的成员,同时也可加入新的成员以满足实际的需要。
同样的,接口的扩展(或继承)也是通过关键字extends来实现的。有趣的是,一个接口可以继承多个接口,这点与类的继承有所不同。
接口扩展的语法:
**interface 子接口名称 extends 父接口1,父接口2... { ... }**
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)