java多态性问题

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方法

神不在的星期二
浏览 518回答 5
5回答

隔江千里

 1. 这是向上转型,并不是说将classStart转成了接口;是指类型是父类  2. classStart 实现了interfaceStart 里的start方法,自然可以调用,而且是classStart的方法  3. 如果classStart 有其他的方法,此时没法调用

料青山看我应如是

i不是interfaceStart接口的实例化对象,接口是没有实例化对象的,他只有指向子类的实例。你这什么强制转化根本没什么用。

扬帆大鱼

多态:父类引用指向子类对象。 前提:有继承或者实现; 体现:调用子类的方法(所以只有重写了方法多态才有意义) 多态时:除了调用方法时(重写方法)是子类的表现形式,其它一切都是父类的表现形式(包括编译,成员变量等),如果需要用到子类特有方法,只能向下转型或者创建子类对象。想访问父类特有方法(private),只能在父类中访问

长风秋雁

发现自己忽略了引用和实例对象,你的解释让我很清楚了,谢谢你。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java