方法重写
-
建立三个类来理解,先看下静态方法的
-
B类
//重写都是方法的重写,和属性无关 public class B { public static void test(){ System.out.println("B=>test()"); } }
-
A类
//继承 public class A extends B{ public static void test(){ System.out.println("A=>test()"); } }
-
Application类
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() } }
-
-
再来看下非静态方法的
-
B类
//重写都是方法的重写,和属性无关 public class B { public void test(){ System.out.println("B=>test()"); } }
-
A类
//继承 public class A extends B{ //Override 重写 这里还有个快捷键Alt+inseet,快速构建重写 @Override//注解:有功能的注释! public void test() { System.out.println("A=>test()"); } }
-
Application类
public class Application { //静态的方法和非静态的方法区别很大! //静态方法:法的调用只和左边,定义的数据类型有关 //非静态:重写 public static void main(String[] args) { A a =new A(); a.test();//A=>test() //父类的引用指向了子类 B b=new A();//子类重写了父类的方法 b.test();//A=>test()
-
-
重写小总结:
- 重写:需要有继承关系,子类重写父类的方法!
- 方法名必须相同
- 参数列表必须相同
- 修饰符:范围可以扩大但不能缩小:public>protected>Default>private
- 抛出的异常:范围,可以被缩小,但不能扩大:ClassNotFoundExecption–>Exception(大)
-
重写:子类的方法和父类必须要一致;方法体不同!