day9-方法重写,多态

发布于:2022-12-02 ⋅ 阅读:(749) ⋅ 点赞:(0)

1.分析事物的共性,并抽取出正确的继承体系
现有基础班老师(BaseTeacher)和就业班老师(WorkTeacher)两个类,两者都含有姓名和年龄两个属性,还有一个讲课的行为teach,但不同的是,基础班老师的teach方法输出【基础班老师讲JavaSE】,就业班老师的teach方法输出【就业班老师讲JavaEE】,请用代码实现。
运行结果:
张三老师...23
基础班老师讲JavaSE
李四老师...24
就业班老师讲JavaEE

class Teacher{
    String name;
    int age;
    public Teacher(String name,int age){
        this.name = name;
        this.age = age;
    }
    public void teach(){}
}
class BaseTeacher extends Teacher{
    public BaseTeacher(String name,int age){
        super(name,age);
    }

    @Override
    public void teach() {
        System.out.println(name+"老师"+"..."+age);
        System.out.println("基础班老师讲JavaSE");
    }
}
class WorkTeacher extends Teacher{
    public WorkTeacher(String name,int age){
        super(name,age);
    }
    public void teach(){
        System.out.println(name+"老师"+"..."+age);
        System.out.println("就业班老师讲JavaEE");
    }
}
public class Demo1 {
    public static void main(String[] args) {
        BaseTeacher bt = new BaseTeacher("张三",23);
        bt.teach();
        WorkTeacher wt = new WorkTeacher("李四",24);
        wt.teach();
    }
}

2.结合继承的思想,分析下列需求并实现
1.    定义项目经理类Manager 【属性:姓名 工号 工资 奖金】【行为:工作work】
2.    定义程序员类Coder【属性:姓名 工号 工资】【行为:工作work】
3.    要求:通过有参构造创建两个类的对象,并调用各自的work方法
运行结果:
姓名为:张三,工号为:9527,工资为:10000.0,的程序员正在编写代码
姓名为:李四,工号为:9528,工资为:15000.0,奖金为:2000.0,的项目经理正在管理程序员写代码

class Person{
    String name;
    int id;
    int salary;
    public Person(String name,int id,int salary){
        this.name = name;
        this.id =id;
        this.salary = salary;
    }
    public void work(){}
}
class Manager extends Person{
    int bonus;
    public Manager(String name,int id,int salary,int bonus){
        super(name,id,salary);
        this.bonus = bonus;
    }

    @Override
    public void work() {
        System.out.println("姓名为:"+name+",工号为:"+id+",工资为:"+salary+",奖金为:"+bonus+",的项目经理正在管理程序员写代码");
    }
}
class coder extends Person{
    public coder(String name,int id,int salary){
        super(name,id,salary);
    }

    @Override
    public void work() {
        System.out.println("姓名为:"+name+",工号为:"+id+",工资为:"+salary+",的程序员正在编写代码");
    }
}
public class Demo1 {
    public static void main(String[] args) {
        coder c = new coder("张三",9527,10000);
        c.work();
        Manager m = new Manager("李四",9528,15000,2000);
        m.work();
    }
}

3.

构造方法 编写Java程序模拟简单的计算器。 定义名为Number的类其中有两个整型数据成员n1和n2应声明为私有。
编写构造方法赋予n1和n2初始值再为该类定义加addition、减subtration、乘multiplication、除division等公有成员方法分别对两个成员变量执行加、减、乘、除的运算。
在main方法中创建Number类的对象调用各个方法并显示计算结果

class Number{
    private int n1;
    private int n2;
    public Number(int n1,int n2){
        this.n1 = n1;
        this.n2 = n2;
    }
    public void addition(){
        System.out.println(n1+n2);
    }
    public void subtration(){
        System.out.println(n1-n2);
    }
    public void multiplication(){
        System.out.println(n1*n2);
    }
    public void division(){
        System.out.println(n1/n2);
    }
}
public class Demo1 {
    public static void main(String[] args) {
        Number n = new Number(10,5);
        n.addition();
        n.division();
        n.multiplication();
        n.subtration();
    }
}

4.

在控制台输出如下提示:

购物系统
--------------------------------------
1. 客户信息管理
2. 购物结算
3. 真情回馈
4. 注销
5. 退出
--------------------------------------
请选择(1~5)

键盘录入1~5,输入对应操作

import java.util.Scanner;
public class Demo1 {
    public static void main(String[] args) {
        System.out.println("**************购物系统************");
        System.out.println("---------------------------------");
        System.out.println("*---------1. 客户信息管理---------*");
        System.out.println("*---------2.  购物结算 ----------*");
        System.out.println("*---------3.  真情回馈 ----------*");
        System.out.println("*---------4.   注销 ------------*");
        System.out.println("*---------5.   退出 ------------*");
        System.out.println("---------------------------------");
        System.out.println("请选择(1~5)");
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        switch(x){
            case 1:
                System.out.println("欢迎来到客户信息管理页面");
                break;
            case 2:
                System.out.println("欢迎来到购物结算页面");
                break;
            case 3:
                System.out.println("欢迎来到真情回馈页面");
                break;
            case 4:
                System.out.println("欢迎来到注销页面");
                break;
            case 5:
                System.out.println("退出");
                break;
        }
    }
}

 5.

定义一个人类,包括属性:姓名、性别、年龄、国籍;包括方法:吃饭、睡觉,工作。

(1)根据人类,派生一个学生类,增加属性:学校、学号;重写工作方法(学生的工作是学习)。

(2)根据人类,派生一个工人类,增加属性:单位、工龄;重写工作方法(工人的工作是??自己想吧)。
(3)根据学生类,派生一个学生干部类,增加属性:职务;增加方法:开会。
(4)编写主函数分别对上述3类具体人物进行测试。

class Person{
    String name;
    String sex;
    int age;
    String nation;
    public void eating(){}
    public void sleeping(){}
    public void working(){}
}
class Student extends Person{
    String school;
    int Sno;

    @Override
    public void working() {
        System.out.println("学生的工作是学习");
    }
}
class Worker extends Person{
    String unit;
    int workAge;
    public void working() {
        System.out.println("工人的工作是搬砖");
    }
}
class StudentHelp extends Student{
    String Sjob;
    public void meeting(){
        System.out.println("学生干部开会");
    }
}
public class Demo1 {
    public static void main(String[] args) {
        Student s = new Student();
        s.working();
        Worker w = new Worker();
        w.working();
        StudentHelp st = new StudentHelp();
        st.meeting();
    }
}
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到