接口是比“abstract类”更抽象的类,在java中,类是单继承的,而接口可以实现多继承
接口包含接口声明和接口体
接口体包含常量和抽象方法 常量用public final 修饰(可以省略),抽象方法用public abstract修饰(可以省略)
一个类可以实现多个接口,中间用逗号隔开,如果一个非抽象类实现了某个接口,那么这个类必须要重写该接口的全部方法,并且由于接口中的方法一定是public abstract 方法,所以非抽象类的方法在重写接口方法的时候不仅要去掉abstract修饰给出方法体,而且方法的访问权限一定要明显地用public来修饰。
类重写的接口方法以及接口中的常量可以被类的对象调用,而且常量也可以用接口名直接调用。类也可以被继承。
接口回调:
//类创建的对象的引用直接赋值给接口变量
public class TestInterface2 {
public static void main(String args[]) {
ShowMessage sm;
sm =new TV();
sm.showMessage("长虹牌电视机");
sm=new PC();
sm.showMessage("联想奔月");
}
}
interface ShowMessage{
void showMessage(String string);
}
class TV implements ShowMessage{
public void showMessage(String string) {
System.out.println(string);
}
}
class PC implements ShowMessage{
public void showMessage(String string) {
System.out.println(string);
}
}
接口和多态:
//该接口的类的实例的引用传递给该接口参数
interface SpeakHello{
void speakHello();
}
class Chinese implements SpeakHello{
public void speakHello(){
System.out.println("中国人的问候:你吃饭了吗?");
}
}
class English implements SpeakHello{
public void speakHello(){
System.out.println("英国人的问候:今天天气怎么样?");
}
}
class KindHello{
public void lookHello(SpeakHello hello){
hello.speakHello();
}
}
public class TestInterface_1 {
public static void main(String args[]){
KindHello kindhello=new KindHello();
kindhello.lookHello(new Chinese());
kindhello.lookHello(new English());
}
}
abstract类与接口的比较:
1.abstract类和接口都可以有abstract方法
2.接口中只可以有常量,不可以有变量;而abstract类中可以有常量也可以有变量
3.abstract类中可以有非abstract方法,也可以有abstract方法。
网友评论