一、接口概述 接口是比抽象更高的抽象,它是一个完全抽象的类,即抽象方法的集合。接口使用关键字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{
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...
{
...
}**
|