Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么';那不早订吗?_Java_Late Binding_Early Binding - Fatal编程技术网

Java 为什么';那不早订吗?

Java 为什么';那不早订吗?,java,late-binding,early-binding,Java,Late Binding,Early Binding,这是后期绑定的例子,但当我编译这段代码,然后使用cavaj反编译时 我在ab.java中找到了以下代码: class a{ void display(){ System.out.println("display1"); } } class b extends a{ void display(){ System.out.println("display1b"); } } class c extends b{ void di

这是后期绑定的例子,但当我编译这段代码,然后使用cavaj反编译时 我在ab.java中找到了以下代码:

class a{
    void display(){
        System.out.println("display1");
    }
}

class b extends a{
    void display(){
        System.out.println("display1b");
    }
}

class c extends b{
    void display(){
        System.out.println("display1c");
    }
}

class ab {
    public static void main(String args[]){
        a mn=new c();
        mn.display();
    }
}
若它是后期绑定,那个么编译器不必知道display()方法来自c类, 但在这里它是已知的,因为它取代了
a mn=新的c(); 与
c c1=新的c();
,因此这是早期绑定???

请格式化您的代码并遵守命名约定。您使用的是局部变量,以便编译器了解其范围并可以执行这些优化,而这些优化不会影响代码的行为。将
c1
作为属性执行相同的操作,然后检查接下来会发生什么。@SJuan76以及我如何将c1作为属性?您将覆盖显示。因此无需参考a类显示方法。因为c是a的子级。在
main
方法之外定义
mn
。不要让它成为私人的。无论如何,如果你不知道属性是什么,也许你应该先集中精力学习语言的基础,然后再探索它的本质。
class ab {
    ab(){}

    public static void main(String args[]){
        c c1 = new c();
        c1.display();
    }
}