你的题目里头“在类中添加一个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的改变都不会影响到你当前这个类。