java接口 引用

Python014

java接口 引用,第1张

你的fun3()方法时定义在类B中的,它不属于接口A,所以你调用不了它。而且A a =new B ()这句,你创建的不是B类的对象,而是接口A被B类实现后的对象。所以很明显你用a.fun3()实质上是调用接口A的fun3()方法,但你的接口A中并没定义fun3()方法,所以会出错。

你的题目里头“在类中添加一个fun3()方法,使用new关键字创建一个类的对象"要求你创建的B类的对象,应该改为 B a =new B ()

如果你必须要用接口A的对象 a 来调用B类的fun3()方法,就必须进行强制类型转换:((B)a).fun3()这样就把对象a 强制转换为B类的了,就可以调用B类的fun3()方法

接口是抽象的,用来解耦最适合。而且可以发挥多态的优势。

给你举个例子

interface

A

{

void

run()

}

class

B

implements

A{

void

run()

{

System.out.println("我是B")

}

}

class

C

implements

A{

void

run()

{

System.out.println("我是C")

}

}

如果你这么写:

A

a

=

new

B()

a.run()//这里打印出“我是B”,如果前面new的是C这里就打印出“我是C”。

所以这个类就和B和C这2个类解耦,BC的改变都不会影响到你当前这个类。