接口与实现

2019-05-16  本文已影响0人  敬子v

接口是比“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方法。

上一篇下一篇

猜你喜欢

热点阅读