面向对象——方法重写
重写:需要有继承关系,子类重写父类的方法!
- 方法名必须相同
- 参数列表必须相同
- 修饰符:范围可以扩大,不能缩小:public>protected>default>private
- 抛出的异常:范围可以缩小,不能扩大:ClassNotFoundException>Exception(大)
重写,子类的方法和父类必须要一致;方法提不同!
为什么要重写:父类的功能,子类不一定需要,活着不一定满足!
package(包)com.du.OOP.demo02:类Application(mian()方法)
package com.du.OOP.demo02;
import com.du.OOP.demo05.A;
import com.du.OOP.demo05.B;
import com.du.OOP.demo05.Student;
//一个项目应该只存在一个main方法
public class Application {
public static void main(String[] args) {
//1.A和B中的test()方法是自己手写定义的,并且是static方法
//static方法:方法的调用只和左边,定义的数据类型有关
A a = new A();
a.test();//A=>test()
//父类的引用指向了子类
B b = new A();
b.test();//B=>test()
//2.B中写test1()非static方法,A中使用快捷键alt+insert点击override,选择test1()进行方法重写
a.test1();//A=>test1()
b.test1();//A=>test1()
//因此,static方法和非static方法区别很大,重写只和非static方法有关,和static方法无关
}
}
package(包)com.du.OOP.demo05:类A(方法重写)
package com.du.OOP.demo05;
public class A extends B{
//1.A和B中的test()方法是自己手写定义的,并且是static方法
public static void test(){
System.out.println("A=>test()");
}
//2.B中写test1()非static方法,A中使用快捷键alt+insert点击override,选择test1()进行方法重写
@Override //注解:有功能的注释!
public void test1() {
System.out.println("A=>test1()");
}
}
package(包)com.du.OOP.demo05:类B(方法重写)
package com.du.OOP.demo05;
//重写都是方法的重写,和属性无关
public class B {
//1.A和B中的test()方法是自己手写定义的,并且是static方法
public static void test(){
System.out.println("B=>test()");
}
//2.B中写test1()非static方法,A中使用快捷键alt+insert点击override,选择test1()进行方法重写
public void test1(){
System.out.println("B=>test1()");
}
}
本文探讨了Java中的方法重写概念,强调了重写需要在继承关系下进行,且重写方法必须与被重写方法有相同的名称和参数列表。通过示例代码展示了静态与非静态方法的区别,指出静态方法不能被重写,而重写主要涉及非静态方法。此外,还解释了重写的原因,即为了满足子类特定功能需求。
916

被折叠的 条评论
为什么被折叠?



