重写
重写都是方法的重写,和属性无关
重写:alt+insert : override
为什么要重写:父类的功能子类不一定需要
静态方法
主类B
package demo03; public class B { public static void test(){ System.out.println("B=>test()"); } }
A
package demo03; public class B { public static void test(){ System.out.println("B=>test()"); } }
main
import demo03.A; import demo03.B; public class Application { public static void main() { //方法的调用之和左边定义的数据类型有关。 A a=new A(); a.test();//结果输出A=>test(); //父类的引用指向了子类 B b=new A(); b.test();//结果输出B=>test(); } }
注意两个输出结果
非静态方法
B
package demo03; public class B { public void test(){ System.out.println("B=>test()"); } }
A
package demo03; public class A extends B{//注解和super.test()之间用alt+insert键生成 @Override//注解:有功能的注释 public void test() { System.out.println("A=>test"); } }
main
import demo03.A; import demo03.B; public class Application { public static void main() { //方法的调用之和左边定义的数据类型有关。 A a=new A(); a.test();//结果输出A=>test(); //父类的引用指向了子类 B b=new A(); b.test();//结果输出B=>test(); } }
结果全部都输出A=>test(main中B b=new A()代表子类重写了父类方法)
重写:需要有继承关系,子类重写父类的方法
1、方法名必须相同
2、参数列表必须相同
3、修饰符:范围可以扩大public>protected>default>privte
4、抛出异常 :范围,可以被缩小,但不能被扩大