重写:需要有继承关系,子类重写父类的方法!
1.方法名必须相同
2.参数列表必须相同
3.修饰符:范围可以被扩大但是不可以被缩小 public(最大)–>protected–>default–>private(最小)
4.异常:异常可以被缩小但是不可以被扩大 ClassNotFoundException(小)–> Exception(大)
这是主程序
package com.oop.demo04;
public class Application {
/*
静态方法和非静态方法区别很大
1.静态方法 方法的调用只和左边定义的数据类型有关
2.非静态方法 重写
*/
public static void main(String[] args) {
// 方法的调用只和左边定义的数据类型有关
A a = new A();
a.test();
// 父类的引用指向子类
B b = new A(); // 子类重写了父类的方法
b.test(); // B
}
}
这是B类
package com.oop.demo04;
// 重写都是方法的重写 和属性无关
public class B {
public void test(){
System.out.println("test=>B");
}
}
这是A类
package com.oop.demo04;
public class A extends B{
@Override // 注解:有功能的注释
public void test(){
System.out.println("test=>A");
}
}
这里是A类继承B类,在A类里面重写B类的方法,即子类重写父类的方法。
运行结果:
我们这里验证一下修饰符的范围,将B类(父类)中public修改为protected
运行结果
所以修饰符:范围可以被扩大但是不可以被缩小 public(最大)–>protected–>default–>private(最小)
总结:
重写都是方法的重写 和属性无关
1.方法名必须相同
2.参数列表必须相同
3.修饰符:范围可以被扩大但是不可以被缩小 public(最大)–>protected–>default–>private(最小)
4.异常:异常可以被缩小但是不可以被扩大 ClassNotFoundException(小)–> Exception(大)