java中的方法重写
父类代码如下:
package oop.Demo05;
public class B {
public static void test(){//静态方法
System.out.println("B=====>");
}
public void test2(){//动态方法
System.out.println("B=====>");
}
}
子类代码如下
package oop.Demo05;
public class A extends B{
public static void test(){//静态方法
System.out.println("A=====>");
}
// public void test2(){//动态方法
// System.out.println("A=====>");
// }
//Override重写的意思
启动类代码如下:
package oop.Demo05;
public class Application02 {
public static void main(String[] args) {
//方法中有static时:静态方法
//静态方法的调用只和等于号=左边定义的数据有关。
//只有非静态方法才可以重写、且必须为public公共类方法
A a = new A();
a.test();
B b = new A();//B类可以用A类new出来是因为A类为子类,继承了父类B的所有东西
b.test();
//结果为A====》和B====》
/* 会出现这种情况的原因是:b是A new出来的对象,因此调用了A的方法
* 因为静态(static)方法是类的方法,而非静态方法(没有static)是对象的方法。
* 有static时b调用的是B类的方法,因为b是B类定义的;
* 没有static时b调用的是对象的方法,而此时的对象是A new出来的,所以会调用A的对象
*/
//方法中没有static时:非静态方法
A a1 = new A();
a.test2();
B b1 = new A();//子类重写了父类的方法
b1.test2();
//结果都为A====》
}
}
重写:需要有继承关系,子类去重写父类的方法!
1.方法名必须相同
2.参数列表必须相同
3.修饰符:范围可以扩大:public>protected>Default>private
4.抛出的异常:范围,可以被缩小,但不能扩大;ClassNotFoundException -->》Exception(大于前面那个)
重写,子类的方法和父类必须要一致;{里的方法体不同}
重写的原因:
1.父类的功能,子类不一定需要,或者不一定满足!
浙公网安备 33010602011771号