接口
- 接口中所有的方法都是public abstract;
- 定义为抽象类,只能用来继承,不能实例化;
- 如果一个类中有抽象方法,那么这个类必须定义为抽象类
- 抽象类没有方法体,如果一个类实现(implements)了抽象方法,那么这个类必须重写抽象方法(code implements-three);
- 在接口中声明方法时,不能使用native、static、final、synchronized、private、protected等修饰符;
- 和public类一样,public接口也必须定义在与接口同名的文件中
- 接口中可以有数据成员,这些成员默认都是 public static final。
- 接口中的静态数据,可以用实现的类名来访问,或者实例化对象来访问(指的是实例化“实现的那个类名”有点绕口了,);
- 一个接口可以继承自另一个接口
- Java中不允许类的多继承,但允许接口的多继承(code six);
- 在Java中,一个类可以实现多个接口(code seven);
- 一个类在继承另外一个类的同时,可以实现多个接口(code eight);
9.优点:在平台移植时,如果获取方法发生改变,那么就只用修改实现(implement)方法体里面的处理方式,方法名不变;ex:数据库从mysql变成oracle,链接方式改变,sql语句改变。只要名称不变file1,file3都可以重用,只需修改file2中的处理逻辑;
## code implements-three ##
interface student{
void study();
String getName();
}
public class stuInfo implements student{
String Name;
stuInfo(){
this.Name = "somjor";
}
public void setName(String name){
this.Name = name;
}
public void study(){
System.out.println("he is learning");
}
public String getName(){
return Name;
}
}
public class grade{
public static void main(String[] args){
stuInfo st = new stuInfo();
st.study();
System.out.println(st.getName());
}
}
## code six ##;
interface fish{
void water();
}
interface animal{
void land();
}
interface goldfish extends fish{
}
interface crocodile extends fish,animal{
}
## code seven ##;
class beast implements fish,animal{
public void water(){}
public void land(){}
}
## code eight ##;
interface bird{
void fly();
}
class magic extends beast implements bird{
public void fly(){}
}