Java学习笔记day5——多态练习、构造器、非静态代码块、实例、native\final关键字

这篇博客主要介绍了Java中的构造器,包括构造器的作用、特点、快捷键和继承问题。接着讲解了代码块的作用、执行特点和格式。此外,还探讨了this和super关键字的使用,以及native和final关键字的含义和应用场景。通过实例展示了如何使用这些概念进行多态练习,涉及Employee、MyDate、SalaryEmployee、HourEmployee和Manager类的设计。博客最后提到了代码块和构造器在Person、Student、Teacher类优化中的应用。
摘要由CSDN通过智能技术生成

目录

        练习1:员工多态练习

【构造器知识点】

1. 类的第三个成员:构造器

(1)什么是构造器?

(2)构造器的作用是?

(3)构造器的特点

2. 构造器快捷键

3. 构造器的互相调用

4. 构造器的继承问题

①父类的构造器不会继承到子类中

②父类构造器与子类构造器的关系

③为什么子类构造器一定要调用父类构造器?

练习2:构造器拓展练习:Person、Student、Teacher类优化

【代码块知识点】

1. 类的第四个成员(结构)——代码块

(1)作用

(2)意义

(3)执行特点

(4)格式

【this和super关键字】

1. this

2. this可以出现在哪些地方

3. this关键字有几种使用形式

4. super

5. super关键字的几种使用形式

6.总结:

【native关键字】

1. nativa

2. 用在哪?

3. 用和不用有什么区别?

4. 格式

【final关键字】

1. final

2. 用在哪

3. 作用是什么?


练习1:员工多态练习

(1)声明一个父类Employee员工类型

有姓名属性,私有化,提供get/set方法

public double earnings():代表实发工资,返回0.0

public String getInfo():显示姓名和实发公子

(2)声明MyDate类型

有int类型的年,月,日属性,私有化,提供get/set方法

提供public String getInfo(),返回“xxxx年xx月xx日”

(3)声明一个子类SalaryEmployee正式工,继承父类Employee

增加属性,double 类型的薪资,MyDate类型的出生日期,私有化,提供get/set方法

重写方法,public double earning()返回实发工资,实发工资= 薪资

重写方法:public String getInfo()显示姓名和实发工资、生日

(4)声明一个子类HourEmployee小时工,继承父类Employee

有属性,double类型的工作小时数和每小时多少钱

重写方法,public double earning()返回实发工资,实发工资= 每小时多少钱*小时数

重写方法:public String getInfo()显示姓名和实发工资、时薪,工作小时数

(5)声明一个子类Manager经理,继承SalaryEmployee

增加属性:奖金比例,私有化,提供get/set方法

增加方法:public double earning()返回实发工资,实发工资=薪资*(1+奖金比例)

增加方法:public String getInfo():显示姓名和实发工资,生日,奖金比例

(6)声明一个员工数组,存储各种员工,遍历查看每个人的详细信息,并统计实发工资总额,通知财务准备资金

(7)从键盘输入当期月份值,如果他是正式工(salaryEmployee和Manager),并且是本月生日的,通知领取生日礼物

代码为:

public class Employee {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double earning(){
        return 0.0;
    }
    public String getInfo(){
        return "姓名:"+name+"实发工资:"+earning();
    }
}
public class MyDate {
    private int year;
    private int month;
    private int day;
    public int getYear() {
        return year;
    }
    public void setYear(int year) {
        this.year = year;
    }
    public int getMonth() {
        return month;
    }
    public void setMonth(int month) {
        this.month = month;
    }
    public int getDay() {
        return day;
    }
    public void setDay(int day) {
        this.day = day;
    }
    public String getInfo(){
        return year+"年"+month+"月"+day+"日";
    }
}
public class SalaryEmployee extends Employee{
    private double salary;
    private MyDate birthday;
    public double getSalary() {
        return salary;
    }
    public void setSalary(double salary) {
        this.salary = salary;
    }
    public MyDate getBirthday() {
        return birthday;
    }
    public void setBirthday(MyDate birthday) {
        this.birthday = birthday;
    }

    @Override
    public double earning() {
        return salary;
    }

    @Override
    public String getInfo() {
        return super.getInfo()+"生日:"+birthday.getInfo();
    }
}
public class HourEmployee extends Employee{
    private double hour;
    private double hour_salary;

    public double getHour() {
        return hour;
    }

    public void setHour(double hour) {
        this.hour = hour;
    }

    public double getHour_salary() {
        return hour_salary;
    }

    public void setHour_salary(double hour_salary) {
        this.hour_salary = hour_salary;
    }

    @Override
    public double earning() {
        return hour*hour_salary;
    }

    @Override
    public String getInfo() {
        return super.getInfo()+"时薪:"+hour_salary+"工作小时数"+hour;
    }
}
public class Manager extends SalaryEmployee{
    private double bonusRatio;
    public double getBonusRatio() {
        return bonusRatio;
    }
    public void setBonusRatio(double bonusRatio) {
        this.bonusRatio = bonusRatio;
    }

    @Override
    public double earning() {
        return super.earning()*(1+bonusRatio);
    }

    @Override
    public String getInfo() {
        return super.getInfo()+"奖金比例:"+bonusRatio;
    }
}
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Employee[] arr = new Employee[3];
        SalaryEmployee s = new SalaryEmployee();
        s.setName("张三");
        MyDate d1 = new MyDate();
        d1.setYear(2000);
        d1.setMonth(1);
        d1.setDay(2);
        s.setBirthday(d1);
        s.setSalary(10000);
        arr[0] = s;

        HourEmployee h = new 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值