[英]Why can’t we override a base class method with private extended class method?
[英]Why can't we use this instance in the static method of extended class?
基类
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.
}
}
为什么我们不能在扩展类的静态方法中使用此实例?
您的main
方法是静态的,这意味着没有与之关联的Basic实例,因此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();
}
}
那不是访问静态方法的正确方法。 this
不是静态的。 取而代之的是Basic5.main_hooo()
this和static彼此相反,就这么简单。如果要使用它,请在非静态方法中使用它。
如果要首先执行main()方法,则必须使用String []参数定义它。 而且,main()是静态方法(它属于该类)。 没有要引用的实例。
使用类名称在main中调用它:
Basics415.main_hooo(); // this line no longer throws an error.
对于不需要创建对象的静态方法,
public static void main(String[] args) {
Basics415 b = new Basics415();
b.main_hooo();// output : 1234
main_hooo();// output : 1234
Basics415.main_hooo();// output : 1234
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.