覆盖构造函数类
以下是我的代码。 我没有得到什么是错误。 任何人都可以指导。
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