public class { public static void main(String args[]){ classStart is =new classStart (); interfaceStart i = (interfaceStart )is; i.start(); } } interface interfaceStart { public void start(); } class classStart implements interfaceStart{ public void start(){ System.out.println("word..start"); } }
为什么将classStart类强制转换为interfacestart接口后,还可以调用start方法
1. 这是向上转型,并不是说将classStart转成了接口;是指类型是父类
2. classStart 实现了interfaceStart 里的start方法,自然可以调用,而且是classStart的方法
3. 如果classStart 有其他的方法,此时没法调用
语法就是语法.你先学精通了再来想为什么
为什么1+1=2这种问题是咱们这种屁民该想的么.那是顶尖数学家想的事情.
i不是interfaceStart接口的实例化对象,接口是没有实例化对象的,他只有指向子类的实例。你这什么强制转化根本没什么用。
多态:父类引用指向子类对象。 前提:有继承或者实现; 体现:调用子类的方法(所以只有重写了方法多态才有意义)
多态时:除了调用方法时(重写方法)是子类的表现形式,其它一切都是父类的表现形式(包括编译,成员变量等),如果需要用到子类特有方法,只能向下转型或者创建子类对象。想访问父类特有方法(private),只能在父类中访问
发现自己忽略了引用和实例对象,你的解释让我很清楚了,谢谢你。