什么是接口:当一个抽象类,如果抽象类中的所有方法都是抽象的,那么我们就可以把它定义成接口。接口里面写的,全是抽象的方法,并且在接口里面不能被实例化,只能被别的类继承其接口重写。而且被其他类继承了这个接口之后,类中必须得重写接口中的所有方法!!!接口是对行为的抽象,类是对属性和行为的抽象。接口表示一个完全抽象类,其成员变量为常量,应该定义为public final static.如果成员变量前没有添加修饰符,系统会默认修饰符为public final static.所有的方法为public abstract抽象方法
语法
interface 接口名 {
方法的定义。
}
public interface Chouyan {
float PI=3.14f; ( public final static是默认的,这只局限于接口类中)
public abstract void Chou();
public void sleep();
}
在接口中,每一个方法的定义都是抽象的,可以省略abstract。
接口不可以直接被实例化。需要有类来实现接口,实现接口的语法为:
public class 类名 implements 接口名 ,接口名,…{
//实现每一个接口的方法
}
public class Erzi extends Person implements Chouyan{
@Override
public void Chou() {
System.out.println("张浩在抽烟!");
}
@Override
public void sleep() {
System.out.println("张浩在睡觉!");
}
Erzi 继承了Person类 然后实现了Chouyan接口
实现了Chouyan接口之后,必须得重写Chouyan接口里面所有的抽象方法。!!!(记住是所有,接口里面有多少个方法就重写多少个!)
在接口中可以定义属性,可以通过接口中的实现类的实例来访问,还可以通过接口名来访问,接口中的属性不能修改,我们接口中的属性默认都是final static 的,通常在接口中定义属性把它作为常量,常量的名字规范是单词大写。
接口和抽象类的区别:
1:接口里面的所有方法都是抽象的,抽象类里面的方法可以是抽象的也可以不抽象。
2:接口和抽象类都不能被实例化,接口需要类来实现后实例化实现类。抽象类需要类来继承然后实现子类。
3:抽象类只能单继承(包括普通类也是只能单继承),接口也可以单继承接口,接口可以多实现。
4:接口中的变量属性是final static类型的,抽象类中的属性跟普通类中的属性没用区别
5:接口中的方法默认是抽象的不需要加abstract, 抽象类中的抽象方法需要添加abstract关键字。