黑马程序员技术交流社区
标题:
【求助】接口多态可以向下转型吗
[打印本页]
作者:
黑马_java猿
时间:
2014-8-13 18:41
标题:
【求助】接口多态可以向下转型吗
本帖最后由 黑马_java猿 于 2014-8-15 21:40 编辑
interface A{
}
class B implements A
{
public String test()
{
return "yes";
}
}
class exam4
{
static A get()
{
return new B();
}
public static void main(String[] args)
{
A a=get();
if(A instanceof B)
B b = (B)a; //此处运用是否恰当?,还是接口不具备向下转型的条件?
System.out.println(a.test());
}
}
复制代码
如上 这个B实现A 但是不能使用B的特有方法 除了在A中加个抽象方法,B b = (B)a; 这个可以吗?
作者:
weity
时间:
2014-8-13 18:48
本帖最后由 weity 于 2014-8-13 19:02 编辑
首先接口是不能实例化的,A a是不行的,只有实现A的类才可以。所以也没有接口的实例向下转型的问题把A定义成抽象类,看看
abstract class A{ //interface A{
}
class B extends A // implements A
{
public String test()
{
return "yes";
}
}
class exam4
{
static A get() //这个什么意思?
{
return new B();
}
public static void main(String[] args)
{
A a=get(); //啥意思。。。
if(A instanceof B)//这个应该。。。。反了改为if(B instanceof A)
B b = (B)a;
System.out.println(a.test());
}
}
复制代码
好吧,解到最后我凌乱了。。。向下转型应该是可以的吧,我好想看到过(String)obj,obj是Object类的一个对象~
作者:
复仇者联盟
时间:
2014-8-13 18:50
具备。你可以看一下毕老师的那个基础视频,那个讲的很清楚。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2