重写:需要有继承关系,子类重写父类的方法!
1.方法名必须相同
2.参数列表必须相同
3.修饰符:范围可以扩大但不能缩小:public>protected>default>private
4.抛出异常:范围可以被缩小,但不能扩大:classnotfoundexception-->Exception(大)
重写,子类的方法和父类必要一致;
方法体不同
为什么要重写:
1.父类功能,子类不一定需要,或者不一定满足
快捷键alt+insert(idea)选override
package com.wuming.oop4.demo07;//继承 //子类继承父类就拥有父类的全部方法 public class A extends B {public static void test(){System.out.println("A=>test()");}public void test1(){//没有static即不是静态方法,有箭头System.out.println("A1=>test()");}/* @Overridepublic void test1() {//因为是非静态的即重写,10到12行也可以用快捷键alt+insert(idea)选override,//但运行结果不一样,结果是B1=>test();然后B类里面 b.test1()运行后B1=>test(),子类重写父类后都输出父类的内容super.test1();}*/ }
package com.wuming.oop4.demo07; //重写都是方法的重写与属性无关 public class B {public static void test(){System.out.println("B=>test()");}public void test1(){//没有static即不是静态方法,有箭头System.out.println("B1=>test()");} }
package com.wuming.oop4;import com.wuming.oop4.demo07.A; import com.wuming.oop4.demo07.B;public class Application {//静态方法和非静态方法的区别很大://静态方法:方法的调用之和左边有关//非静态:重写public static void main(String[] args) {//方法的调用只和左边有关A a = new A();a.test();//A=>test()//父类的引用指向了子类B b = new A();b.test();//B=>test()a.test1();//A1=>test()b.test1();//A1=>test()} }
A=>test()
B=>test()
A1=>test()
A1=>test()