基础课程
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.
}
}
为什么我们无法在扩展类的静态方法中使用此实例?
答案 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
}