覆盖主要方法
回答
号main
是一个静态方法,因此是不是多态。您可以隐藏它是在子类中定义另一个静态main
方法,虽然。
不可以。您不能覆盖静态方法。
无论如何这不会有意义。由于您不需要该类的实例,因此不需要多态行为。你只需要将全部从SomeParent.main()
更改为SomeChild.main()
不,不可能重写静态方法,因为它们不是实例级方法,而是类级方法。
不,你在这里失去了重点。主要方法有一个目的,并为此唯一目的进行逻辑声明:
Java中的主要方法属于一个类,但不属于对象。对象创建在Java中的main()
是应用程序的起点,无法从特定于实例的方法启动应用程序。这就是为什么静态关键字与主要方法完美结合的原因。其实主要方法声明的所有部分做出完美的感觉,当你觉得像“JVM”和画面的主要方法做什么(启动应用程序):
public
,因为这种方法必须由可访问jvm(不是由你写的)。这意味着这个方法可以在没有对象的情况下被访问(因为它的表示从不改变),但是如果你再次像jvm一样思考,这里的逻辑很容易被理解; “我没有任何对象来创建(实例化)对象,所以我需要一个静态方法来启动应用程序,因为简单没有任何合理的方法来获取特定于实例的方法,因为我没有任何东西尚未创造物体“。void
此方法无法在逻辑上返回任何内容,因为没有任何内容尚未返回任何内容。这是应用程序的起点。 主要我是主要的方法,因为没有我你不会有一个应用程序。String[] args
给我发送的数据你可能会觉得我有用的启动。
我们不能重写静态方法,因为静态方法是一个类方法,并且这个方法的范围在同一个类本身内。所以如果你想强行重写,那么你必须在该类范围之外定义它,这是没有意义的。
这个我试过,不知道它的正确的方式来覆盖的方法,但我能够覆盖这样的主要方法,
class MainOverride {
public static void main(String[] args) {
MainOverridden mo = new MainOverridden();
String [] s = {"a","b"};
mo.main(s);
}
}
class MainOverridden extends MainOverride {
public static void main(String[] args) {
System.out.println("Main overridden");
}
}
您无法重写静态方法。你刚才隐藏了主要方法MainOverride类。 – 2017-04-22 18:52:17
他甚至没有隐藏它。仍然可以像以前一样运行'MainOverride'作为应用程序。如果你没有告诉它运行该子类,它有一个子类的事实是无关紧要的。 – 2017-04-22 19:31:49
谢谢您的评论,我从中得到的结论是,我遵循重写的方式并不实际有效,但请您可以庆祝更多 - 因为我是新来的java :) – 2017-04-24 08:32:51
- 1. Laravel - 模型类,覆盖主要方法
- 2. 关于覆盖主要方法中的GUI的run()方法
- 3. 覆盖主要的CSS
- 4. 需要覆盖主题CSS
- 5. 覆盖方法
- 6. 覆盖方法
- 7. 覆盖'+'方法
- 8. 覆盖方法
- 9. 覆盖方法
- 10. 是否可以使用LD_PRELOAD覆盖主要方法?
- 11. Java方法覆盖 - “方法不会覆盖超级方法...”
- 12. 需要覆盖的webdriver的方法
- 13. Android方法覆盖
- 14. Java。覆盖方法
- 15. C++覆盖方法
- 16. eclipse覆盖方法
- 17. C++方法覆盖
- 18. Backbone.Marionette覆盖方法
- 19. 覆盖OnCreateOptionsMenu方法
- 20. 调用覆盖方法,超类调用覆盖方法
- 21. 强制覆盖方法,如果另一种方法被覆盖
- 22. 调用从覆盖方法中覆盖的方法在OO PHP
- 23. 无法覆盖ApiController方法
- 24. 无法覆盖onMeasure方法
- 25. Pthreads:主要覆盖互斥锁
- 26. 想要覆盖表中的主键值
- 27. Facebook AccountKit覆盖onActivityResult主要活动
- 28. 覆盖扩展方法
- 29. Python - 覆盖静态方法
- 30. 如何覆盖方法
你能给的,当你想做到这一点的例子,为什么? – 2012-01-31 17:38:03