1-9方法的重写(override)
Posted superfly123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1-9方法的重写(override)相关的知识,希望对你有一定的参考价值。
什么是重写?
重写,也叫做覆盖,当父类中的方法无法满足子类需求时,子类可以将父类的方法进行重写编写来满足需求。比如孩子继承了父亲的房子,可以将房子重新装修。
方法重写的条件:
- 两个类必须是继承关系
- 必须具有相同的方法名,相同的返回值类型,相同的参数列表.
- 重写的方法不能比被重写的方法拥有更低的访问权限。
- 重写的方法不能比被重写的方法抛出更宽泛的异常。(关于异常后面的章节再讲。)
- 私有的方法不能被重写。
- 构造方法无法被重写,因为构造方法无法被继承。
- 静态的方法不存在重写。
- 重写指的是成员方法,和成员变量无关。
先定义一个动物类
class Animal {
public void eat() {
System.out.println("吃饭");
}
public void sleep() {
System.out.println("睡觉");
}
}
定义一个Cat类继承Animal
class Cat extends Animal {
public void eat() {
System.out.println("吃猫粮");//猫喜欢吃猫粮
}
}
定义一个Dog类继承Animal
class Dog extends Animal {
public void eat() {
System.out.println("吃狗粮");//狗喜欢吃狗粮
}
}
Animal测试类
public class AnimalTest01 {
public static void main(String[] args) {
Cat c = new Cat();
c.eat();
Dog d = new Dog();
d.eat();
}
}
上代码中的Cat类和Dog类在调用父类Animal中的eat方法时已经不能很好的满足自身的需求了,所以都将eat类进行了重写。
静态的方法不存在重写
public class Test01{
public static void main(String[] args){
A.m1();
B.m1();
}
}
class A{
//静态方法
public static void m1(){
System.out.println("A中静态方法m1");
}
}
class B extends A{
//尝试重写父类的静态方法
public static void m1(){
System.out.println("B中静态方法m1");
}
}
以上是关于1-9方法的重写(override)的主要内容,如果未能解决你的问题,请参考以下文章
Java中重载(Overload)和重写(Override)的定义
c#基础-19.重写(override)和覆盖(new)的区别
智能合约实战 solidity 语法学习 12 [ virtual 重写override 抽象abstract 接口interface 库library 销毁selfdestruct] 附代码(代码片
智能合约实战 solidity 语法学习 12 [ virtual 重写override 抽象abstract 接口interface 库library 销毁selfdestruct] 附代码
智能合约实战 solidity 语法学习 12 [ virtual 重写override 抽象abstract 接口interface 库library 销毁selfdestruct] 附代码