源代码
//父类Parent class Parent{ int x; int y; Parent() { x = 0; y = 0; } public void Set(int a,int b) { x = a; y = b; } } //子类Child继承了Parent class Child extends Parent{ int z; Child() { super();//使用父类的构造方法初始化 z = 0; } public void Set(int a,int b)//与父类相同的方法 { x = a; y = b; z = a + b; } public void Show() { System.out.println("初始值"); System.out.println("x = "+ x +" y = " + y + " z = " + z); System.out.println("调用父类的Set方法Set(1,2)"); super.Set(1,2); System.out.println("x = "+ x +" y = " + y + " z = " + z); System.out.println("调用子类的Set方法Set(1,2)"); Set(1,2); System.out.println("x = "+ x +" y = " + y + " z = " + z); } } public class Test { public static void main(String args[]) { Child c = new Child(); c.Show(); } }
结果截图
Java“方法覆盖”的语法规则
(1)覆盖方法的允许访问范围不能小于原方法。
(2)覆盖方法所抛出的异常不能比原方法更多。
(3)声明为final方法不允许覆盖。 例如,Object的getClass()方法不能覆盖。
(4)不能覆盖静态方法
“方法覆盖(override)”的要点:
(1)方法覆盖要求子类与父类的方法一模一样,否则就是方法重载(overload)!
(2)在子类中,若要调用父类中被覆盖的方法,可以使用super关键字。