为什么我们不能在扩展类的静态方法中使用此实例?

时间:2014-05-24 01:47:46

标签: java oop static

基础课程

class Basics415 {   

    Basics1 b1 = new Basics1();

    public static void main_hooo(){
        out.println("1234");     
    }

    void main_ho(){

    }

}

扩展课程

public class Basics5 extends Basics415{     

    public static void main(String[] args){

        this.main_hooo();  // this line throws error.
    }

}

为什么我们无法在扩展类的静态方法中使用此实例?

5 个答案:

答案 0 :(得分:1)

您的main方法是静态的,这意味着没有与之关联的基本实例,因此this无法正常工作。要访问Basics415的静态方法,您应该明确地引用它们:

public class Basics5 extends Basics415{
    public static void main(){
        Basics415.main_hooo();
    }
}

Basic5扩展Basic415以来,您也可以这样做。两者都可以接受,但您的组织可能有自己的风格指南:

public class Basics5 extends Basics415{
    public static void main(){
        main_hooo();
    }
}

答案 1 :(得分:1)

这不是访问静态方法的正确方法。 this不是静态的。而是Basic5.main_hooo()

答案 2 :(得分:1)

这和静态是相反的,就像那样简单..如果你想使用它,在非静态方法中使用它。

答案 3 :(得分:0)

如果希望首先执行main()方法,则必须使用String []参数定义它。另外,main()是一个静态方法(它属于该类)。没有实例(this)可以参考。

使用班级名称在main中调用它:

Basics415.main_hooo();  // this line no longer throws an error.

答案 4 :(得分:0)

对于静态方法,不需要创建对象,

    public static void main(String[] args) {
        Basics415 b = new Basics415();
        b.main_hooo();// output : 1234
        main_hooo();// output : 1234
        Basics415.main_hooo();// output : 1234
    }