java方法的重写

在子类中创建一个与父类中相同名称、相同返回值类型、相同参数列表的方法,只是方法体中的实现不同,以实现不同于父类的功能,这种方式被称为方法重写(override),又称为方法覆盖。当父类中的方法无法满足子类需求或子类具有特有功能的时候,需要方法重写。

子类可以根据需要,定义特定于自己的行为。既沿袭了父类的功能名称,又根据子类的需要重新实现父类方法,从而进行扩展增强。

//注意重写的方法,形参列表和方法名必须与前方法一致
//私有方法不能被重写(加override是否报错)

package com.yuyang.override;

public class Test {
    public static void main(String[] args) {
        //认识方法重写
        //注意重写的方法,形参列表和方法名必须与前方法一致
        //私有方法不能被重写(加override是否报错)
        newPhone hw=new newPhone();
        hw.call();
        hw.sendMes();
    }
}

class newPhone extends Phone{
    @Override//重写校验注解,更安全,提高代码的可读写性,代码更优雅
    public void call(){//重写的方法
        super.call();
        System.out.println("开视频电话");
    }
    @Override
    public void sendMes(){//重写的方法
        super.sendMes();
        System.out.println("发图片");
    }
}

class Phone{
    public void call(){
        System.out.println("打电话");
    }
    public void sendMes(){
        System.out.println("发短信");
    }
}

### Java方法重写的规则 在 Java 编程中,方法重写是一项关键特性,允许子类重新定义父类中的同名方法。为了确保程序的正确性和一致性,Java方法重写设定了严格的规则。 #### 子类与父类的关系 只有当两个类之间存在继承关系时,才可能发生方法重写。即子类能够重写来自其直接或间接父类方法[^1]。 #### 名称和签名的一致性 被重写方法必须具有相同名称、返回类型(或兼容的协变返回类型)、参数列表以及抛出异常类型的匹配度。这意味着如果父类有一个不带任何参数并返回 `int` 类型的方法,则子类也应如此声明该函数[^2]。 #### 访问权限控制符的要求 通常来说,子类里用于覆盖的方法不能拥有更严格访问级别的修饰词;也就是说,假如父级成员是 public 或 protected 的话,在派生出来的类别里面就不能变成 private 。然而,反过来是可以接受的——更加宽松的可见级别是允许增加的[^3]。 #### 静态上下文中不允许发生覆写行为 静态方法属于编译期绑定,因此它们不会参与运行时期的动态分发机制,所以无法通过这种方式来改变原有功能的表现形式。同样地,final 关键字标记下的实体也不可再做进一步调整因为这代表最终版本不可更改[^4]。 ### 示例代码展示 下面给出一段简单的例子说明上述原则: ```java class Parent { // 定义了一个普通的实例方法 disp() void disp() { System.out.println("disp() method of parent class"); } } // 创建 Child 继承自 Parent 并尝试重载 disp 方法 public class Child extends Parent { @Override // 使用此注解表明我们正在执行的是方法重写操作而非意外创建新方法 void disp(){ super.disp(); // 调用父类版本的方法 System.out.println("disp() method overridden in child class"); } } ``` 在这个案例中,Child 类成功地实现了对 Parent 类中 disp 方法的有效重写,并且保留了原有的逻辑结构同时增加了新的输出语句[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值