接口的定义
/**
* 声明一个接口,体现一种规范,规范一定是公开的
*/
public interface TestInterface {
//接口中成分的特点,JDK 8之前接口只能有抽象方法和常量
public static final String SCHOOL_NAME="河北"; //常量
//声明一个接口,体现一种规范,规范一定是公开的,所以可以省略public static final
//String SCHOOL_NAME1; 因为是个常量所以你不赋值就报错了
String SCHOOL_NAME2="河北";//这是个常量
//抽象方法
public abstract void run();
void run1();//因为接口是公开你不写public,abstract和上面定义的run也一样
}
接口如何约束类
接口是用来被类是实现(implements)的,实现接口的类称为实现类,实现类可以理解为所谓的子类。
修饰符 class 实现类 implements 接口1,接口2,……{
}
例子
/**
*定义一个运动员接口
*/
public interface Sport {
//定义两个方法跑步和比赛
void run();
void competition();
}
接口定义多少都可以,这里我们定义两个
/**
* 定义个法律接口
*/
public interface Law {
void rule();
}
/**
* 定义一个运动员类去实现接口
*/
public class Pingpong implements Sport,Law{
private String name;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(name+"要跑步了!");
}
@Override
public void competition() {
// TODO Auto-generated method stub
System.out.println(name+"要打比赛了");
}
@Override
public void rule() {
System.out.println(name+"要遵纪守法");
}
}
测试一下
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Pingpong p1=new Pingpong();
p1.setName("张继科");
p1.run();
p1.competition();
p1.rule();
}
}
类与类的关系,单继承
类与接口的关系,多实现
接口与接口的关系,多继承,一个接口可以同时继承多个接口
接口多继承的作用:整合多个接口为一个接口,便于子类实现
多继承例子
/**
*定义一个运动员接口
*/
public interface Sport extends People,Law{ //让运动接口继承人接口和法律接口
//定义两个方法跑步和比赛
void run();
void competition();
}
在实现Sport接口的时候,就也要实现People,Law接口
public class Pingpong implements Sport{//因为Sport已经继承了Law和People两个接口这里直接写Sport就可以