Java-黑马Java学习作业-day13面向对象进阶(static&继承)

学习视频链接:https://www.bilibili.com/video/BV17F411T7Ao


第一题:

需求:

​ 在黑马程序员中有很多员工(Employee)。

​ 按照工作内容不同分教研部员工(Teacher)和行政部员工(AdminStaff)

  1. 教研部根据教学的方式不同又分为讲师(Lecturer)和助教(Tutor)
  2. 行政部根据负责事项不同,又分为维护专员(Maintainer),采购专员(Buyer)
  3. 公司的每一个员工都编号,姓名和其负责的工作
  4. 每个员工都有工作的功能,但是具体的工作内容又不一样。
  • Employee
package cn.kox.homework01;

/**
 * @ClassName: Employee
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Employee {
    private String id;
    private String name;

    public Employee() {
    }

    public Employee(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public void work() {
        System.out.println("员工正在工作...");
    }
}

  • Teacher
package cn.kox.homework01;

/**
 * @ClassName: Teacher
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Teacher extends Employee{
    public Teacher() {
    }

    public Teacher(String id, String name) {
        super(id, name);
    }

    @Override
    public void work() {
        System.out.println("教研部员工正在工作...");
    }
}

  • AdminStaff
package cn.kox.homework01;

/**
 * @ClassName: AdminStaff
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class AdminStaff extends Employee{
    public AdminStaff() {
    }

    public AdminStaff(String id, String name) {
        super(id, name);
    }

    @Override
    public void work() {
        System.out.println("行政部门的员工正在工作...");
    }
}

  • Lecturer
package cn.kox.homework01;

/**
 * @ClassName: Lecturer
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Lecturer extends Teacher{
    public Lecturer() {
    }

    public Lecturer(String id, String name) {
        super(id, name);
    }

    @Override
    public void work() {
        System.out.println("讲师正在工作...");
    }
}

  • Tutor
package cn.kox.homework01;

/**
 * @ClassName: Tutor
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Tutor extends Teacher{
    public Tutor() {
    }

    public Tutor(String id, String name) {
        super(id, name);
    }

    @Override
    public void work() {
        System.out.println("助教正在工作");
    }
}

  • Maintainer
package cn.kox.homework01;

/**
 * @ClassName: Maintainer
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Maintainer extends AdminStaff{
    public Maintainer() {
    }

    public Maintainer(String id, String name) {
        super(id, name);
    }

    @Override
    public void work() {
        System.out.println("维护专员正在工作...");
    }
}

  • Buyer
package cn.kox.homework01;

/**
 * @ClassName: Buyer
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Buyer extends AdminStaff{
    public Buyer() {
    }

    public Buyer(String id, String name) {
        super(id, name);
    }

    @Override
    public void work() {
        System.out.println("采购专员正在工作...");
    }
}

  • Test
package cn.kox.homework01;

/**
 * @ClassName: Demo
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Test {
    public static void main(String[] args) {
        Lecturer a1 = new Lecturer("001", "a1");
        System.out.println(a1.getId() +  "," + a1.getName());
        a1.work();

        Maintainer b2 = new Maintainer();
        b2.setId("002");
        b2.setName("b2");
        System.out.println(b2.getId() + "," + b2.getName());
        b2.work();
    }
}

第二题:

需求:

​ 在传智教育的tlias教学资源管理系统中,存在学生、老师角色会进入系统。

分析:

​ 学生信息和行为(名称,年龄,所在班级,查看课表,填写听课反馈fillForm)

​ 老师信息和行为(名称,年龄,部门名称,查看课表,发布问题publishForm)

​ 定义角色类作为父类包含属性(名称,年龄),行为(查看课表)

​ 定义子类:学生类包含属性(所在班级),行为(填写听课反馈)

​ 定义子类:老师类包含属性(部门名称),行为(发布问题)

  • Role
package cn.kox.homework02;

/**
 * @ClassName: Role
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Role {
    private String name;
    private int age;

    public Role() {
    }

    public Role(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void action() {
        System.out.println("查看课表...");
    }
}

  • Teacher
package cn.kox.homework02;

/**
 * @ClassName: Teacher
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Teacher extends Role{
    private String department;

    public Teacher() {
    }

    public Teacher(String name, int age, String department) {
        super(name, age);
        this.department = department;
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }

    @Override
    public void action() {
        System.out.println(getName() + "老师正在发布问题....");
    }
}

  • Student
package cn.kox.homework02;

/**
 * @ClassName: Student
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Student extends Role{
    private String myClass;

    public Student() {
    }

    public Student(String name, int age, String myClass) {
        super(name, age);
        this.myClass = myClass;
    }

    public String getMyClass() {
        return myClass;
    }

    public void setMyClass(String myClass) {
        this.myClass = myClass;
    }

    @Override
    public void action() {
        System.out.println(getName() + "学生正在填写听过课反馈...");
    }
}

  • Test
package cn.kox.homework02;

/**
 * @ClassName: Test
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Test {
    public static void main(String[] args) {
        Student s1 = new Student("a1", 20, "1班");
        s1.action();


        Teacher t1 = new Teacher();
        t1.setName("b2");
        t1.setAge(35);
        t1.setDepartment("Java教学");
        t1.action();
    }
}

第三题:

需求:

​ 完成代码(按照标准格式写),然后在测试类中测试。

​ 1.手机类Phone

​ 属性:品牌brand,价格price

​ 无参构造,有参构造

​ 行为:打电话call,发短信sendMessage,玩游戏playGame

​ 2.测试类

​ 创建Phone类对象,调用Phone类中的方法

思考:

​ 假设所有的手机都有属性屏幕的尺寸(int size),而且假设所有手机的屏幕尺寸为6,应该如何实现?

提示:

​ 可以把size定义为静态

  • Phone
package cn.kox.homework03;

/**
 * @ClassName: Phone
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Phone {
    static int size = 6;

    private String brand;
    private int price;

    public Phone() {
    }

    public Phone(String brand, int price) {
        this.brand = brand;
        this.price = price;
    }

    public static int getSize() {
        return size;
    }

    public static void setSize(int size) {
        Phone.size = size;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public void call() {
        System.out.println("打电话...");
    }

    public void sendMessage() {
        System.out.println("发短信...");
    }

    public void playGame() {
        System.out.println("打游戏...");
    }
}

  • Test
package cn.kox.homework03;

/**
 * @ClassName: Test
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Test {
    public static void main(String[] args) {
        Phone p1 = new Phone("小米", 666);
        System.out.print("一个" + Phone.size + "英寸,价值" + p1.getPrice() + "的" + p1.getBrand() +"手机" + "正在");
        p1.call();

        Phone p2 = new Phone();
        p2.setBrand("华为");
        p2.setPrice(999);
        Phone.size = 7;
        System.out.print("一个" + Phone.size + "英寸,价值" + p2.getPrice() + "的" + p2.getBrand() +"手机" + "正在");
        p2.sendMessage();
    }
}

第四题:

需求:

​ 分析以下需求,并用代码实现

​ 1.定义Person类

​ 属性:

​ 姓名name、性别gender、年龄age、国籍nationality;

​ 方法:

​ 吃饭eat、睡觉sleep,工作work。

​ 2.根据人类,创建一个学生类Student

​ 增加属性:

​ 学校school、学号stuNumber;

​ 重写工作方法(学生的工作是学习)。

​ 3.根据人类,创建一个工人类Worker

​ 增加属性:

​ 单位unit、工龄workAge;

​ 重写工作方法(工人的工作是盖房子)。

​ 4.根据学生类,创建一个学生干部类 StudentLeader

​ 增加属性:

​ 职务job;

​ 增加方法:开会meeting。

​ 5.编写测试类分别对上述3类具体人物进行测试。

​ 6.要求运行结果:

学生需要学习!
工人的工作是盖房子!
学生干部喜欢开会!
  • Person
package cn.kox.homework04;

/**
 * @ClassName: Person
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Person {
    private String name;
    private String gender;
    private int age;
    private String nationality;

    public Person() {
    }

    public Person(String name, String gender, int age, String nationality) {
        this.name = name;
        this.gender = gender;
        this.age = age;
        this.nationality = nationality;
    }

    public String getName() {
        return name;
    }

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

    public String getGender() {
        return gender;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getNationality() {
        return nationality;
    }

    public void setNationality(String nationality) {
        this.nationality = nationality;
    }

    public void eat() {
        System.out.println("吃饭");
    }

    public void sleep() {
        System.out.println("睡觉");
    }

    public void work() {
        System.out.println("工作");
    }
}

  • Student
package cn.kox.homework04;

/**
 * @ClassName: Student
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Student extends Person{
    private String school;
    private String stuNumber;

    public Student() {
    }

    public Student(String name, String gender, int age, String nationality, String school, String stuNumber) {
        super(name, gender, age, nationality);
        this.school = school;
        this.stuNumber = stuNumber;
    }

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }

    public String getStuNumber() {
        return stuNumber;
    }

    public void setStuNumber(String stuNumber) {
        this.stuNumber = stuNumber;
    }

    @Override
    public void work() {
        System.out.println("学生的工作是学习");
    }

}

  • Worker
package cn.kox.homework04;

/**
 * @ClassName: Worker
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Worker extends Person{
    private String unit;
    private int workAge;

    public Worker() {
    }

    public Worker(String name, String gender, int age, String nationality, String unit, int workAge) {
        super(name, gender, age, nationality);
        this.unit = unit;
        this.workAge = workAge;
    }

    public String getUnit() {
        return unit;
    }

    public void setUnit(String unit) {
        this.unit = unit;
    }

    public int getWorkAge() {
        return workAge;
    }

    public void setWorkAge(int workAge) {
        this.workAge = workAge;
    }

    @Override
    public void work() {
        System.out.println("工人的工作是盖房子");
    }
}

  • StudentLeader
package cn.kox.homework04;

/**
 * @ClassName: StudentLeader
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class StudentLeader extends Student{
    private String job;

    public StudentLeader() {
    }

    public StudentLeader(String name, String gender, int age, String nationality, String school, String stuNumber, String job) {
        super(name, gender, age, nationality, school, stuNumber);
        this.job = job;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public void meeting() {
        System.out.println("学生干部喜欢开会");
    }
}

  • Test
package cn.kox.homework04;

/**
 * @ClassName: Test
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Test {
    public static void main(String[] args) {
        Student s1 = new Student("a1", "boy", 18, "China", "abc123", "001");
        System.out.println(s1.getName() + "," + s1.getGender() + "," + s1.getAge() + " ," + s1.getNationality() + "," + s1.getSchool() + "," + s1.getStuNumber());
        s1.work();

        Worker w1 = new Worker();
        w1.setName("b2");
        w1.setGender("boy");
        w1.setAge(58);
        w1.setNationality("China");
        w1.setUnit("abc321");
        w1.setWorkAge(38);
        System.out.println(w1.getName() + "," + w1.getGender() + "," + w1.getAge() + " ," + w1.getNationality() + "," + w1.getUnit() + "," + w1.getWorkAge());
        w1.work();

        StudentLeader sL1 = new StudentLeader("a2", "boy", 19, "China", "abc1233", "002", "minister");
        System.out.println(sL1.getName() + "," + sL1.getGender() + "," + sL1.getAge() + " ," + sL1.getNationality() + "," + sL1.getSchool() + "," + sL1.getStuNumber());
        sL1.work();
        sL1.meeting();
    }
}

第五题:

需求:

​ 1.定义项目经理类
​ 属性:
​ 姓名 工号 工资 奖金
​ 行为:
​ 工作work
​ 2.定义程序员类
​ 属性:
​ 姓名 工号 工资
​ 行为:
​ 工作work

​ 3.向上抽取一个父类,让这两个类都继承这个父类,共有的属性写在父类中,子类重写父类中的方法

​ 4.编写测试类:完成这两个类的测试

  • Staff
package cn.kox.homework05;

/**
 * @ClassName: Staff
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Staff {
    private String name;
    private String id;
    private int salary;

    public Staff() {
    }

    public Staff(String name, String id, int salary) {
        this.name = name;
        this.id = id;
        this.salary = salary;
    }

    public String getName() {
        return name;
    }

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

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public int getSalary() {
        return salary;
    }

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

    public void work() {
        System.out.println("员工正在工作...");
    }
}

  • Manager
package cn.kox.homework05;

/**
 * @ClassName: Manager
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Manager extends Staff{
    private int awards;

    public Manager() {
    }

    public Manager(String name, String id, int salary, int awards) {
        super(name, id, salary);
        this.awards = awards;
    }

    public int getAwards() {
        return awards;
    }

    public void setAwards(int awards) {
        this.awards = awards;
    }

    @Override
    public void work() {
        System.out.println("这是经理的工作...");
    }
}

  • Programmer
package cn.kox.homework05;

/**
 * @ClassName: Programmer
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Programmer extends Staff{
    public Programmer() {
    }

    public Programmer(String name, String id, int salary) {
        super(name, id, salary);
    }

    @Override
    public void work() {
        System.out.println("这是程序员的工作...");
    }
}

  • Test
package cn.kox.homework05;

/**
 * @ClassName: Test
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Test {
    public static void main(String[] args) {
        Manager m1 = new Manager("a1", "001", 8000, 4000);
        System.out.println(m1.getName() + "," + m1.getId() + "," + m1.getSalary() + "," + m1.getAwards());
        m1.work();

        Programmer b2 = new Programmer("b2", "002", 6000);
        System.out.println(b2.getName() + "," + b2.getId() + "," + b2.getSalary());
        b2.work();
    }
}

第六题:

需求:

​ 根据需求完成代码:

​ 1.定义动物类

​ 属性:
​ 年龄,颜色
​ 行为:
​ eat(String something)方法(无具体行为,不同动物吃的方式和东西不一样,something表示吃的东西)

​ 生成空参有参构造,set和get方法

​ 2.定义狗类继承动物类

​ 行为:
​ eat(String something)方法,看家lookHome方法(无参数)

​ 3.定义猫类继承动物类

​ 行为:

​ eat(String something)方法,逮老鼠catchMouse方法(无参数)

​ 4.定义Person类

​ 属性:
​ 姓名,年龄

​ 行为:
​ keepPet(Dog dog,String something)方法

​ 功能:喂养宠物狗,something表示喂养的东西

​ 该方法调用后打印结果为:颜色为黑色的2岁的狗,在吃骨头

​ 行为:
​ keepPet(Cat cat,String something)方法
​ 功能:喂养宠物猫,something表示喂养的东西

​ 该方法调用后打印结果为:颜色为白色的2岁的猫,在吃小鱼干

​ 5.生成空参有参构造,set和get方法

​ 6.测试以上方法

  • Animal
package cn.kox.homework06;

/**
 * @ClassName: Animal
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Animal {
    private int age;
    private String color;

    public Animal() {
    }

    public Animal(int age, String color) {
        this.age = age;
        this.color = color;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String eat(String something) {
        return "在吃" + something;
    }
}

  • Cat
package cn.kox.homework06;

/**
 * @ClassName: Cat
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Cat extends Animal{
    public Cat() {
    }

    public Cat(int age, String color) {
        super(age, color);
    }

    public void catchMouse() {
        System.out.println("在抓老鼠");
    }
}

  • Dog
package cn.kox.homework06;

/**
 * @ClassName: Dog
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Dog extends Animal{
    public Dog() {
    }

    public Dog(int age, String color) {
        super(age, color);
    }

    public void lookHome() {
        System.out.println("在看家");
    }
}

  • Person
package cn.kox.homework06;

/**
 * @ClassName: Person
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void keepPet(Dog dog, String something) {
        System.out.println("颜色为" + dog.getColor() + "的" + dog.getAge() + "岁" + "的狗," + dog.eat(something));
    }

    public void keepPet(Cat cat, String something) {
        System.out.println("颜色为" + cat.getColor() + "的" + cat.getAge() + "岁" + "的猫," + cat.eat(something));
    }
}

  • Test
package cn.kox.homework06;

/**
 * @ClassName: Test
 * @Author: Kox
 * @Data: 2023/1/26
 * @Sketch:
 */
public class Test {
    public static void main(String[] args) {
        Dog d1 = new Dog(6, "金色");
        d1.lookHome();
        Cat c1 = new Cat(4, "灰色");
        c1.catchMouse();
        Person p1 = new Person("kox", 19);
        System.out.println(p1.getName() + "," + p1.getAge());
        p1.keepPet(d1, "骨头");
        p1.keepPet(c1, "鱼干");


    }
}

  • 10
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值