1.接口的定义
接口就是规范,定义的是一组规则;是比"抽象类"还"抽象"的"抽象类",可以更加规范的对子类进行约束,全面专业的实现了:规范与接口的分离。
2.接口的格式
权限修饰符 interface 接口名{
常量定义 //总是public static final
方法定义 //总是public abstract
}
看下面代码
定义一个接口Person
public interface Person {
int i = 10;
public void eat();
}
编译后得到Person.class文件,再进行反编译得到如下源码
public abstract interface Person
{
public static final int i = 10;
public abstract void eat();
}
结论:接口的类默认有abstract修饰;
接口的变量默认有public static final修饰,既全局静态常量;
接口的方法默认有abstract修饰。
定义一个子类实现Person类
public class Student implements Person{
//属性
private String name;
private int age;
private char gender;
//构造方法
public Student(){}
public Student(String name, int age, char gender){
this.name = name;
this.age = age;
this.gender = gender;
}
//生成get/set方法
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
public char getGender(){
return gender;
}
public void setGender(char gender){
this.gender = gender;
}
//生成toString方法
public String toString(){
return "name="+name+", age="+age+", gender="+gender;
}
@Override
public void eat() {
System.out.println("实现的eat方法。。。");
}
}
定义一个测试类
public class Test {
public static void main(String[] args) {
Person p = new Student("小明", 18, '男');
p.eat();
}
}
得到结果
实现的eat方法。。。
总结:1.接口中的所有方法都是抽象的;
2.即使没有显示的将接口中的成员用public标识,也是public访问类型的;
3.可以定义一个新接口,用extends去继承一个已有的接口;
4.可以定义 一个类,用implements去实现一个接口中的所有方法;
5.可以定义一个抽象类,用implements去实现一个接口中的部分方法;
6.一个类只能继承一个类,但同时可以实现多个接口;
7.接口中只有方法和常量。