接口的总结
//父类
public abstract class PalyPerson {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract void sports();
}
//接口是用于在父类中没有的方法但在子类中有扩展的方法的,
接口的方法必须在子类中重写,因为接口是默认抽象的,其方法也是默认是抽象的
注意:接口中的方法的访问修饰符默认是public(公共的)
其成员变量默认是public(公共的),final(常量),static(静态的)
接口的调用:
接口指向子类的实例化
例如:
Iduanpao SportsPerson=new SportsPerson(); //Iduanpao是接口
public interface Iduanpao {
void duanPao();
}
public interface Isheji {
void sheJi();
}
public interface Itiaoshui {
void tiaoShui();
}
//子类和接口的实现(implements Itiaoshui,Isheji,Iduanpao)
public class SportsPerson extends PalyPerson implements Itiaoshui,Isheji,Iduanpao{
public void sports(){//方法重写
tiaoShui();
duanPao();
sheJi();
}
public void tiaoShui(){
System.out.println("会跳水");
}
public void duanPao(){
System.out.println("会短跑");
}
public void sheJi(){
System.out.println("还会射击");
}
public static void main(String[] args) {
//PalyPerson是抽象类,抽象类的引用指向子类的实例化
//,这样才能调用父类中的变量和方法,例如如下:
PalyPerson pa=new SportsPerson();
pa.setName("张三");
System.out.println(pa.getName());
pa.sports();
}
}
接口和类的相似之处:
1.方法数量都不限
2.名称都要和文件名一样,都是以.java为文件的后缀名
3.字节码的文件后缀名都为.class
4.在包中的接口字节码文件必须放置在和包名称相匹配的一个目录结构中
不同之处:
1.接口不能被实例化
2.接口不包含任何构造器
3.接口中的方法都是抽象方法
4.接口中的成员变量只能被声明为public(公共的),final(常量),static(静态的)
5.接口不能被一个类继承,只能被一个类实现
接口的应用:
用于暴露类的方法,即用户可以通过接口来实现类中的方法,接口用于强制一个类具有某些行为
接口的调用:(多态)
public class KongGuanJu {
public void flyManage(IFly fly){//IFly fly是对接口的引用
fly.fly();
System.out.println("停下,我要收费.....");
System.out.println("紧急刹车....缴费后继续走");
fly.fly();
}
}
KongGuanJu kgj = new KongGuanJu();
IFly fly = new SuperMan();
kgj.flyManage(fly);
标记接口:
public interface Iduanpao {
//标记接口没有实现部分
}
一个接口可以继承多个父接口