package demo01;
public class A extends B {
// 非静态方法
// Override:重写
@Override // 注解:有功能的注释
public void test() {
System.out.println("a=>test()");
}
}
package demo01;
// 重新都是方法的重新,和属性无关
public class B {
// 非静态方法
public void test() {
System.out.println("b=>test()");
}
}
import demo01.A;
import demo01.B;
public class Application {
public static void main(String[] args) {
/*
静态的方法和非静态的方法区别很大
静态方法的调用,调用方法跟左边有关
子类重写了父类的方法,这个方法只跟非静态有关
*/
A a = new A();
a.test();
B b = new A();
/*
即 b 是 A new出来的对象
因此调用了 A 的方法
因为静态方法是和类一起加载,是类的方法
而非静态是对象的方法
有 static 时
b 调用了 B 类的方法,因为 b 是用 B 类定义的
没 static 时
b 调用的是对象的方法
*/
b.test();
}
}
重写:
1,需要有继承关系,子类重写父类的方法
2,方法名必须相同
3,参数列表必须相同
4,修饰符:范围可以扩大,但是不能缩小
5,抛出的异常,范围:可以被缩小,但不能被扩大
6,子类的方法和父类的方法必须要一致,方法体不同
重写的作用:
1,父类的功能子类不一定需要,或者满足