覆盖构造函数类

以下是我的代码。 我没有得到什么是错误。 任何人都可以指导。

class State { static String country; static String capital; State() // Constructor { country = "America's"; capital = "Washington DC"; } static void display() { System.out.println(capital + " " + "is" + " " + country + " " + "capital."); } } class Place extends State // Method Overriding { static void display() { System.out.println("Capital is Washington DC"); } public static void main(String[] args) { State st = new State(); Place pl = new Place(); st.display(); pl.display(); st = pl; } } 

运行时显示为“错误:找不到或加载主类State $ Place”

由于输出需要:“资本是华盛顿特区”而不是(资本+“”+“是”+“”+国家+“”+“资本。”)

 class State { static String country; static String capital; State() //Constructor { country = "America's"; capital = "Washington DC"; } static void display() { System.out.println(capital + " " + "is" + " " + country + " " +"capital." ); } } 

主要课程

 class Place extends State // Inheritance static void display() { System.out.println("Capital is Washington DC"); } public static void main(String[] args) { State st = new State(); st.display(); // to print sub class method display(); // to print same class method //st = pl; No idea of this point .. } } 

Overriding取决于具有类的实例。 polymorphism的一点是,您可以对类进行子类化,并且实现这些subclasses类的对象将对superclass定义的相同方法具有不同的行为(并在subclasses重写)。 静态方法与类的任何实例都没有关联,因此该概念不适用。

驱动Java设计的两个因素影响了这一点。 一个是对性能的担忧:有很多人批评Smalltalk关于它太慢(垃圾收集和多态调用是其中的一部分)而Java的创建者决心避免这种情况。 另一个决定是Java的目标受众是C++开发人员。 使静态方法按照它们的方式工作有利于熟悉C++程序员并且也非常快,因为没有必要等到运行时才能确定要调用哪种方法。

我给你一个小例子://它不是重写方法。可能这是你真正期望的

 public class HelloWorld { public static void main(String args[]) { Company st = new Company(); eBay pl = new eBay(); st=pl; //st.address(); pl.address(); } } class Company { static String country; static String capital; Company() // Constructor { country = "America's"; capital = "Washington DC"; } static void address() { System.out.println(capital + " " + "is" + " " + country + " " + "capital."); } } class eBay extends Company { public static void address() { System.out.println("Capital is Washington DC"); } } 

您的Place类需要定义为public

编辑:该文件也必须命名为Place.java