当前位置: 首页 > news >正文

面向对象练习题(6)

目录

第一题

第二题

第三题


第一题

思路分析:

1.这题充分的使用到了我们继承的知识,首先我们知道,我们要创建一父类也是员工类,在类中会有一些属性,和构造器,方法等

2.因为经理类会有一个特有的属性,因此我们要对齐进行单独赋值,这样大大的增加了灵活性,因此在经理类中,在继承完父类后,还要单独为经理的特有属性,提供get和set方法,方便后面使用,然后重写父类的打印工资的方法即可

3,因为员工类,没有特有的属性也没有特有的方法,因此只需要指定父类的构造器,和重写一下父类的方法即可

homework04类

package idea.homework.homework04;

public class homework04 {
    public static void main(String[] args) {
        /*
        4.通过继承实现员工工资核算打印功能
        父类:员工类
        子类:部门经理类、普通员工类
        (1)部门经理工资=1000+单日工资*天数*等级(1.2)。
        (2)普通员工工资=单日工资*天数*等级(1.0);
        (3)员工属性:姓名,单日工资,工作天数
        (4)员工方法(打印工资)
        (5)普遍员工及部门经理都是员工子类,需要重写打印工资方法。
        (5)定义并初始化普通员工对象,调用打印工资方法输入工资,定义并初始化部门经理对象,调用打印工资方法输入工资
         */

        work jack = new work("jack", 123, 10, 1.0);
        jack.print();

        Manager tom = new Manager("tom", 100, 10, 1.0);
        //注意这里要为经理额外赋值奖金,因为我们在经理类中,没有为其赋值,所以我们这里要单独设置一下,不然经理的奖金就是0了
        tom.setBonus(1000);
        tom.print();
    }
}

Employee类

package idea.homework.homework04;

/**
 * 员工类——父类
 */
public class Employee {
    //定义了四个私有的属性
    private String name;//名字
    private double salary;//每日工资
    private int date;//工作天数
    private double gender;//等级

    public Employee(String name, double salary, int date, double gender) {
        this.name = name;
        this.salary = salary;
        this.date = date;
        this.gender = gender;
    }

    public void print() {
        System.out.println("name=" + name + "\tsalary=" + salary * date * gender + "\tdate=" + date + "\tgender=" + gender);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public int getDate() {
        return date;
    }

    public void setDate(int date) {
        this.date = date;
    }

    public double getGender() {
        return gender;
    }

    public void setGender(double gender) {
        this.gender = gender;
    }
}

Manage类

package idea.homework.homework04;

/**
 * 经理类
 */
public class Manager extends Employee {
    //这是经理类特有的属性
    private double bonus;

    //重写父类的方法,因为该类有特殊的属性,因此我们不能够,单单重写父类的方法
    @Override
    public void print() {
        System.out.println("经理=" + getName() + "\t工资=" + (getSalary() * getDate() * getGender() + bonus) + "\t工作天数=" + getDate() + "\t级别=" + getGender());
    }

    //构造器,对于经理类的特殊属性,我们不使用构造器赋值,而是使用set方法去赋值
    public Manager(String name, double salary, int date, double gender) {
        super(name, salary, date, gender);
    }

    public double getBonus() {
        return bonus;
    }

    public void setBonus(double bonus) {
        this.bonus = bonus;
    }
}

work类

package idea.homework.homework04;

/**
 * 普通员工类——子类
 */
public class work extends Employee {
    //在继承父类之后要,指定使用父类的那个构造器,因为父类的无参构造器已经被覆盖,所以我们需要只指定具体的构造器
    public work(String name, double salary, int date, double gender) {
        super(name, salary, date, gender);
    }

    //因为普通员工类没有特殊的方法和属性,所以,直接调用父类的方法即可
    @Override
    public void print() {
        System.out.println("这是普通员工的信息");
        super.print();
    }
}

第二题

思路分析:

本题还是使用充分的使用到了继承的思想,

1.首先我们要先定义一个父类,并且在父类中,提供相应的属性和方法

2.在对有类中,有单独的特殊属性的时候,我们提供get和set方法进行单独的赋值,这样大大的增加了灵活性。

3.在进行测试的时候,一定不要忘记了,为我们特有的属性进行赋值,否则就按照默认值来给了

homework06类

package idea.homework.homework05;


public class homework05 {
    public static void main(String[] args) {
        /*
        5.设计父类一员工类。子类:工人类worker,农民类peasant,教师类teacher,科学家类,服务生类。
        (1)其中工人,农民,服务生只有基本工资
        (2)教师除基本工资外,还有课酬(元/天)
        (3)科学家除基本工资外,还有年终奖
        (4)编写一个测试类,将各种类型的员工的全年工资打印出来
         */


        //创建一个工人类
        worker worker = new worker("jack", 10000, 15);
        //调用工人类的print方法打印工资
        worker.print();
        //创建一个农名类
        peasant peasant = new peasant("tom", 290, 12);
        peasant.print();
        //创建一个教师类
        Teacher smith = new Teacher("smith", 2000, 12);
        //因为在Teacher类中设置了两个特殊的属性,因此在这里我们要对齐进行单独的赋值,然后才去调用方法打印出工资
        smith.setClasstime(360);//因为设置成私有的属性通过set方法设置一节课的费用
        smith.setRemuneration(1000);//因为设置成私有的属性通过set方法设置一共上了几节课
        smith.print();

        //创建一个科学家类
        scientist a = new scientist("小名", 20000, 12);
        a.setBouns(200000);//因为设置成私有的属性通过set方法设置年终奖
        a.print();
        //创建一个服务生类
        buttons abc = new buttons("abc", 20, 12);
        abc.print();
    }
}

Employee类

package idea.homework.homework05;

public class Employee {
    //员工类是父类
    //公共的属性有名字 基本工资  天数
    private String name;//表示名字
    private double salary;//一个月工资简称基本工资
    private int date;//工作的月份

    public Employee(String name, double salary, int date) {
        this.name = name;
        this.salary = salary;
        this.date = date;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public int getDate() {
        return date;
    }

    public void setDate(int date) {
        this.date = date;
    }


    public void print() {
        //打印一个人的名字和工资,,工资等于  月工资*工作的月份
        System.out.println("名字=" + name + "\t工资=" + salary * date + "\t月份" + date);
    }
}

worker类

package idea.homework.homework05;

import idea.homework.homework05.Employee;

public class worker extends Employee {
    //因为该类没有一些特有的属性,所以只需要指定指定一些父类的构造器即可
    public worker(String name, double salary, int date) {
        super(name, salary, date);
    }

    @Override
    public void print() {
        System.out.println("工人的名字");
        super.print();
    }
}

peasant类

package idea.homework.homework05;

public class peasant extends Employee {//农民类

    //因为工人,农民,服务生只有基本工资所以不需要什么其他的东西只需要一个构造器调用父类的方法即可
    public peasant(String name, double salary, int date) {
        super(name, salary, date);
    }

    @Override
    public void print() {//重写父类的方法
        System.out.print("农名的名字是");
        super.print();
    }
}

teacher类

package idea.homework.homework05;

import idea.homework.homework05.Employee;

public class Teacher extends Employee {
    //这是Teacher类特有的属性
    private double remuneration;//表示课酬 一节课要多少钱
    private double classtime;//表示上了几节课

    //在构造器初始化的时候不要把新增加的属性放到构造器中这是Teacher类独有的属性
    //可以通过set方法设置,更加灵活
    public Teacher(String name, double salary, int date) {
        super(name, salary, date);

    }

    public double getRemuneration() {
        return remuneration;
    }

    public void setRemuneration(double remuneration) {
        this.remuneration = remuneration;
    }

    public double getClasstime() {
        return classtime;
    }

    public void setClasstime(double classtime) {
        this.classtime = classtime;
    }

    public void print() {
        //因为老师的增加了课时费所以老师的工资是 基本工资*月份+一节课的费用*一共上了几节课
        System.out.println("老师的名字是" + getName() + "\t工资=" + (getSalary() * 12 + remuneration * classtime) + "\t月份" + getDate());
    }

}

buttons类

package idea.homework.homework05;

public class buttons extends Employee {//服务生类

    //因为工人,农民,服务生只有基本工资所以不需要什么其他的东西只需要一个构造器调用父类的方法即可
    public buttons(String name, double salary, int date) {
        super(name, salary, date);
    }

    @Override
    public void print() {//重写父类的方法
        System.out.print("服务生的名字是");
        super.print();
    }
}

scientist类

package idea.homework.homework05;

public class scientist extends Employee {//科学家类
    //这是该类特有的属性
    private double bouns;//年终奖

    public scientist(String name, double salary, int date) {
        super(name, salary, date);
    }


    public void print() {
        //基本工资*月份+年终奖
        System.out.println("科学家的名字是" + getName() + "\t工资=" + (getSalary() * 12 + bouns) + "\t月份" + getDate());
    }

    public double getBouns() {
        return bouns;
    }

    public void setBouns(double bouns) {
        this.bouns = bouns;
    }
}

第三题

在Father类中

思路分析:

super可以访问哪些成员(属性和方法)

1.因为super关键字是从父类开始查找,不会从本类开始查找,所以本类中的id属性super是访问不到的,因为Father类继承了Grand类,因此就可以访问父类中的所有属性和方法,但是也要遵守访问修饰符的权限,我们可以看到吗,父类中的name属性是可以访问的 ,但是age属性不可以访问,因为他是私有的,g1方法也可以访问

this可以访问哪些成员

1.因为this是从本类中开始查找,因此本类中的id属性,score属性,f1方法都可以访问,因为继承了grand类,所有name属性和g1方法都可以访问,age属性不可以访问是因为,this也要遵守访问修饰符的权限

在Son类中

 super可以访问那些成员(属性和方法)

// super.id super.f1() super.g1() super.name 访问完当前父类还要访问Grand因为继承

 this可以访问那些成员

// this.name this.g1() this.show() this.id this.f1() 注意不可以掉用超类的name属性还有g1方法因为本类已经有了相当于重写了超类所以不可以调用

package idea.homework.homework06;


public class homework06 {
    public static void main(String[] args) {

    }
}

class Grand {
    String name = "AA";
    private int age = 100;

    public void g1() {
    }
}

class Father extends Grand {
    String id = "001";
    private double score;

    public void f1() {
    }
//    super可以访问那些成员(属性和方法)
//        super.name  super.g1()
//    this可以访问那些成员
//    this.id  this.score   this.f1()  this.g1   this.name
}

class Son extends Father {
    String name = "BB";

    public void g1() {
    }



    private void show() {
    }

//    super可以访问那些成员(属性和方法)
//    super.id   super.f1()  super.g1()  super.name   访问完当前父类还要访问超类因为继承
//    this可以访问那些成员
//            this.name   this.g1()  this.show()   this.id   this.f1()   注意不可以掉用超类的name属性还有g1方法因为本类已经有了相当于重写了超类所以不可以调用
}

相关文章:

  • 基于springboot实现时间管理系统演示【附项目源码+论文说明】
  • 【致敬嵌入式攻城狮第2期活动预热征文】——蜂鸣器(内化)
  • 第8章_索引的创建与设计原则
  • 了解PL/SQL看这一篇够够了~
  • 为什么我们认为GPT是一个技术爆炸
  • 低代码打翻前端的饭碗?探秘两者藕断丝连的关系
  • Redis面试题 (2023最新版)
  • 文件转换-cad转geojson
  • 文件操作编程
  • 开发脚手架常用的JS库
  • 设备树dtb文件的格式分析
  • CNN PyTorch MNIST
  • python的简单读写操作
  • 面试官:你做过什么有亮点的项目吗?
  • 面试官:了解mysql的架构体系吗?
  • 2017 前端面试准备 - 收藏集 - 掘金
  • chrome扩展demo1-小时钟
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Flannel解读
  • gcc介绍及安装
  • java 多线程基础, 我觉得还是有必要看看的
  • k8s如何管理Pod
  • nodejs:开发并发布一个nodejs包
  • php面试题 汇集2
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 用element的upload组件实现多图片上传和压缩
  • 用mpvue开发微信小程序
  • 在Docker Swarm上部署Apache Storm:第1部分
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #07【面试问题整理】嵌入式软件工程师
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (力扣)循环队列的实现与详解(C语言)
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (四)汇编语言——简单程序
  • (一) springboot详细介绍
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET基础篇——反射的奥妙
  • /bin/bash^M: bad interpreter: No such file or directory
  • @Bean注解详解
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • @RequestMapping处理请求异常
  • [2021 蓝帽杯] One Pointer PHP
  • [AIGC] 广度优先搜索(Breadth-First Search,BFS)详解
  • [Angularjs]asp.net mvc+angularjs+web api单页应用
  • [bzoj4010][HNOI2015]菜肴制作_贪心_拓扑排序