CC00048.bigdatajava——|Java&static关键字继承.V08|——|Java.v08|方法重写|概念使用|原则|

本文详细介绍了Java中的方法重写概念,包括重写的原则,如方法名、参数列表和返回值需一致,并且访问权限不能降低。通过Person和Worker类的实例展示了如何实现方法重写,以及在Worker类中覆盖父类的方法来实现特定行为。在测试代码中,展示了如何创建和使用Worker对象,以及方法重写后的效果。
摘要由CSDN通过智能技术生成
一、方法重写的概念和使用
### --- 方法重写的概念

~~~     ——>        从父类中继承下来的方法不满足子类的需求时,
~~~     ——>        就需要在子类中重新写一个和父类一样的方法来覆盖从父类中继承下来的版本,
~~~     ——>        该方式就叫做方法的重写(Override)。
二、方法重写的原则
### --- 方法重写的原则

~~~     ——>        要求方法名相同、参数列表相同以及返回值类型相同,从Java5开始允许返回子类类型。
~~~     ——>        要求方法的访问权限不能变小,可以相同或者变大。
~~~     ——>        要求方法不能抛出更大的异常(异常机制)。
三、编程代码
### --- 编程代码:编程实现Person类的封装

/*
    编程实现Person类的封装
 */
public class Person {
    
    // 1.私有化成员变量,使用private关键字修饰
    private String name;
    private int age;
    //private boolean gender; // 性别
    
    // 3.在构造方法中调用set方法进行合理值的判断
    public Person() {
        System.out.println("Person()");
    }
    public Person(String name, int age) {
        System.out.println("Person(String, int)");
        setName(name);
        setAge(age);
    }
    
    // 2.提供公有的get和set方法并在方法体中进行合理值的判断
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        if(age > 0 && age < 150) {
            this.age = age;
        } else {
            System.out.println("年龄不合理哦!!!");
        }
    }
    
    // 自定义成员方法实现特征的打印
    public void show() {
        System.out.println("我是" + getName() + ",今年" + getAge() + "岁了!");
    }
    // 自定义成员方法描述吃饭的行为
    public void eat(String food) {
        System.out.println(food + "真好吃!");
    }
    // 自定义成员方法描述娱乐的行为
    public void play(String game) {
        System.out.println(game + "真好玩!");
    }
}
四、编程代码: 自定义Worker类继承自Person类
### --- 编程代码: 自定义Worker类继承自Person类

/*
    自定义Worker类继承自Person类
 */
public class Worker extends Person {
    
    private int salary;
    
    public Worker() {
        super(); // 表示调用父类的无参构造方法,若没有加则编译器自动添加
        System.out.println("Worker()");
    }
    public Worker(String name, int age, int salary) {
        super(name, age); // 表示调用父类的有参构造方法
        System.out.println("Worker(String, int, int)");
        //setName(name);
        //setAge(age);
        setSalary(salary);
    }
    
    public int getSalary() {
        return salary;
    }
    public void setSalary(int salary) {
        if(salary >= 2200) {
            this.salary = salary;
        } else {
            System.out.println("薪水不合理哦!!!");
        }
    }
    
    // 自定义成员方法描述工作的行为
    public void work() {
        System.out.println("今天的砖头有点烫手...");
    }
    // 自定义show方法覆盖从父类中继承的版本
    @Override  // 标注/注解,用于说明下面的方法是对父类方法的重写,若没有构成重写则编译报错
    public void show() {
        super.show(); // 表示调用父类的show方法
        System.out.println("我的薪水是:" + getSalary());
    }
}
五、编程代码:编程实现Worker类的测试
### --- 编程代码:编程实现Worker类的测试

/*
    编程实现Worker类的测试
 */
public class WorkerTest {
    
    public static void main(String[] args) {
        
        // 1.使用无参方式构造Worker类型的对象并打印特征
        Worker w1 = new Worker();
        // 当子类重写show方法后,则下面调用的是重写以后的版本
        w1.show(); // null  0
        
        System.out.println("----------------------------------");
        // 2.使用有参方式构造Worker类型的对象并打印特征
        Worker w2 = new Worker("zhangfei", 30, 3000);
        w2.show(); // zhangfei ...
        // 调用成员方法测试
        w2.eat("豆芽");
        w2.play("王者荣耀");
        w2.work();
    }
}
六、编译打印
### --- 编译

C:\Users\Administrator\Desktop\project>javac WorkerTest.java
### --- 打印输出

C:\Users\Administrator\Desktop\project>java WorkerTest
Person()
Worker()
我是null,今年0岁了!
我的薪水是:0
----------------------------------
Person(String, int)
Worker(String, int, int)
我是zhangfei,今年30岁了!
我的薪水是:3000
豆芽真好吃!
王者荣耀真好玩!
今天的砖头有点烫手...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值