java接口(interface)详解

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.接口中只有方法和常量。

猜你喜欢

转载自blog.csdn.net/sunming0129/article/details/79769430