讨论区 老师答疑区 主题详情
吴彦祖说我帅
57课时interfacade Painter p1 = (Painter)s2; p1.paint();p1.eat(); (painter)s2,将s2强行转换成painter,那么p1就不指向子类对象了,为什么还能p1.paint呢
课程

所有回复(3)

Teacher类有两个接口,分别是singer和painter。

singer s2=new Teacher(),实际上是new了一个Teacher的对象在内存里,s2指向的就是这个对象,但是s2是singer类型的所以它只看得见Teacher里面实现了singer接口的方法,s2.sleep()和s2.sing()

painter p1=painter s2,相当于p1和s2都指向了Teacher这个对象,但是p1是painter类型的,它只能看见Teacher里面的实现了painter接口的方法,

p1.painter()和p1.eat()。

谢谢。你这么说我懂。但是s2是singer类型,p1是painter类型,怎么能互相转换呢?

s2强行转换成painter类型,s2转换后的名字叫p1,是个painter类,表示在s2里只能看见painter那个类里的方法,其他的方法看不见,paint是painter类里的方法,p1.paint肯定可以调用啊。你把多肽那个多看几遍,看懂

回复

最近活动:
创建时间:
浏览次数:590
关注人数:0