大数据-Java基础第7天

Java基础第7天

继承、多态、super关键字

基础案例

  1. 训练案例1
    1. 训练描述:【继承】

  • 分析以下需求,并用代码实现:
  1. 定义Person类

属性:姓名name、年龄age;

                   方法:空参构造方法、满参构造方法、setXxx()、getXxx()、工作work。

  1. 根据人类,派生一个老师类Teacher

                   重写工作方法(老师的工作是要好好讲课)。 

  1. 根据人类,派生一个学生类Student

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

  1. 编写测试类分别对上述2类具体人物进行测试
  2. 要求运行结果:
package day07.test01;

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 work(){

    }
}

package day07.test01;

public class Student extends Person {
    public void work(){
        System.out.println("好好学习");
    }
}

package day07.test01;

public class Teahcer extends Person {
    public void work(){
        System.out.println("好好讲课");
    }


}
package day07.test01;

public class Test01 {
    public static void main(String[] args) {
        Student student = new Student();
        student.work();
        Teahcer teahcer = new Teahcer();
        teahcer.work();
    }
}

学生的工作要好好学习

                                               老师的工作要好好讲课

      1. 操作步骤描述

    1. 训练案例2
      1. 训练描述:【继承、方法重写】
  • 分析以下需求,要求用代码实现:
  1. 定义手机类

                  方法:打电话(手机的功能是给某人打电话)

  1. 根据手机类,派生一个新手机类

                   重写打电话功能(新功能可以开启视频电话,同时要包含老功能)

  1. 编写测试类分别对上述2类手机进行测试
  2. 要求运行结果:

给林青霞打电话

         ----------------------

开启视频功能

给林青霞打电话

      1. 操作步骤描述

package day07.test02;

public class Phone {
    public void call(String name){
        System.out.println("call"+ name );
    }
}

package day07.test02;

public class NewPhone extends Phone {
    public void call(String name) {
        //重写父类的方法
        System.out.println("vedio call" + name);
        //复用父类的方法
        super.call(name);
    }

}
package day07.test02;

public class Test {
    public static void main(String[] args) {
        Phone phone1 = new Phone();
        phone1.call("林青霞");
        System.out.println("---------------");
        NewPhone phone = new NewPhone();
        phone.call("林青霞");

    }
}

    1. 训练案例3
      1. 训练描述:【多态】
  • 分析以下需求,并用代码实现:
  1. 定义Animal动物类

                   方法:吃东西eat。

  1. 根据动物类,派生一个猫类Cat

                   重写吃东西方法(猫吃鱼)。      

  1. 根据动物类,派生一个狗类Dog

                   重写吃东西方法(狗吃骨头)。

                   狗还有一个特有方法,狗看门

  1. 根据动物类,派生一个猪类Pig

                   重写吃东西方法(猪吃白菜)。

  1. 根据操作动物类AnimalOperator

方法:调用动物的吃方法

  1. 编写测试类分别对上述4类事物AnimalOperator、Cat、Dog、Pig创建对象,调用吃东西功能,进行测试
  2. 要求运行结果:

猫吃鱼

狗吃骨头

猪吃白菜

package day07.test03;

public class AnimalOperator {

    public void animal( Animal animal){
        animal.eat();
    }

}
package day07.test03;

public class Animal {
    public void eat(){
        System.out.println("吃东西eat");

    }
}
package day07.test03;

public class Cat extends Animal {
    public void eat(){
        System.out.println("猫吃鱼");

    }
}
package day07.test03;

public class Dog extends Animal{
    public void eat(){
        System.out.println("狗吃骨头");
    }
    public void lookdoor(){
        System.out.println("狗看门");
    }
}
package day07.test03;

public class Pig extends Animal {
    public void eat(){
        System.out.println("猪吃白菜");
    }
}
package day07.test03;

public class Test {
    public static void main(String[] args) {
        AnimalOperator animal = new AnimalOperator();

        Cat a = new Cat();
        Dog b = new Dog();
        Pig c = new Pig();

        animal.animal(a);
        animal.animal(b);
        animal.animal(c);
    }
}
      1. 操作步骤描述

  • 扩展案例
    1. 训练案例1
      1. 训练描述:
  • 分析以下需求,并用代码实现:

1. 定义Person类

                   属性:

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

                   方法:吃饭eat、睡觉sleep,工作work。

         2.根据人类,派生一个学生类Student

                   增加属性:

                            学校school、学号stuNumber;

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

         3.根据人类,派生一个工人类Worker

                   增加属性:

                            单位unit、工龄workAge;

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

         4.根据学生类,派生一个学生干部类 StudentLeader

                   增加属性:

                            职务job;

                   增加方法:开会meeting。

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

         6.要求运行结果:

                   学生需要学习!

                   工人的工作是盖房子!

                   学生干部喜欢开会!

      1. 操作步骤描述

package day07.test04;

public class Person {
    private String name;
    private  String sex;
    private  int age;
    private  String nationality;

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

    public Person() {

    }

    public String getName() {
        return name;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    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(){};
    public void  sleep(){};
    public void  work(){};


}

package day07.test04;

public class Student extends Person {



    private String school;
    private String 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;
    }
    public Student(){};

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

    @Override
    public void work(){
        System.out.println("study");
    }
}

package day07.test04;



public class StudentLeader extends Student {

    private String job;

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

    public String getJob() {
        return job;
    }

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

    public void meeting(){
        System.out.println("meeting");
    }
}

package day07.test04;

public class Worker extends Person{
    private String unit;
    private int workAge;
    public Worker(String name, String sex, int age, String nationality,String unit,int workAge) {
        super(name, sex, age, nationality);
        this.unit = unit;
        this.workAge=workAge;
    }

    public Worker() {
    }

    @Override
    public void work(){
        System.out.println("盖房子");
    }
}

package day07.test04;



public class test04 {
    public static void main(String[] args) {
        Student s = new Student("龙猫", "男孩子", 20, "我家", "哈哈", "001");
        System.out.println(s.getName() + "  " + s.getSex() +"  " + s.getAge() + "  " + s.getNationality()+ "  " + s.getSchool()+ "  " + s.getStuNumber());
        s.work();

        Worker w = new Worker("哆啦A梦", "male", 10, "我家", "教我代码", 10);
        w.work();

        StudentLeader leader = new StudentLeader("超人", "male", 8, "中国", "超人学校", "1", "救人");
        leader.work();

    }
}

    1. 训练案例2
      1. 训练描述:
  • 分析以下需求,并用代码实现
  1. 定义项目经理类

                            属性:

                                     姓名 工号 工资 奖金

                            行为:

                                     工作work

  1. 定义程序员类

                            属性:

                                     姓名 工号 工资

                            行为:

                                     工作work

  1. 要求:向上抽取一个父类,让这两个类都继承这个父类,共有的属性写在父类中,子类重写父类中的方法
  2. 编写测试类:完成这两个类的测试
      1. 操作步骤描述

package day07.test05;

public class Worker {
    private  String name;
    private  int ID;
    private  double salary;


    public Worker() {
    }

    public Worker(String name, int ID, double salary) {
        this.name = name;
        this.ID = ID;
        this.salary = salary;

    }

    public String getName() {
        return name;
    }

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

    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public double getSalary() {
        return salary;
    }

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

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


}

package day07.test05;

public class Coder extends Worker{
    public Coder(String may, int id, String s){};
    public Coder(String name, int ID, double salary) {
        super(name, ID, salary);
    }
}

package day07.test05;

public class Maneger extends Worker {
    private double jianjing;


    public Maneger(String name, int ID, double salary, double jianjing) {
        super(name, ID, salary);
        this.jianjing = jianjing;
    }

    public double getJianjing() {
        return jianjing;
    }

    public void setJianjing(double jianjing) {
        this.jianjing = jianjing;
    }


}

package day07.test05;

public class Test {
    public static void main(String[] args) {
        Maneger maneger = new Maneger("john",001,1000,500);
        Coder coder = new Coder("may",002,10000);
        System.out.println(maneger.getName() + " " +maneger.getID() + " " + maneger.getSalary() + " " + maneger.getJianjing());
        System.out.println(coder.getName() + " " + coder.getID() + " " + coder.getSalary());
    }
}

    1. 训练案例3
      1. 训练描述:
  • 分析以下需求,并用代码实现
    1. 已知学生类和老师类如下:

                            属性:

                                     姓名,年龄

                            行为:

                                     吃饭

                            老师有特有的方法:

                                     讲课

                            学生有特有的方法:

                                     学习

  1. 要求:向上抽取一个父类,让这两个类都继承这个父类,共有的属性写在父类中,子类重写父类中的方法
  1. 编写测试类:完成这两个类的测试
      1. 操作步骤描述

    1. 训练案例4
      1. 训练描述:
  • 分析以下需求,并用代码实现:

         1.定义员工类:

                   属性:

                            工号,姓名

                   行为:

                            工作方法(用简单的输出语句模拟)

         2.定义经理类:

                   属性:

                            工号,姓名,奖金

                   行为:

                            工作方法(管理员工,简单输出语句模拟)

         3.定义服务员类:

                   属性:

                            工号,姓名

                   行为:

                            工作方法(为客户服务,简单输出语句模拟)

         4.定义测试类:

                   分别创建经理类对象和服务员类对象

                   调用各自的工作方法

                   要求:

                            分析各个事物之间的继承关系,抽取出相关的类

      1. 操作步骤描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值