0
点赞
收藏
分享

微信扫一扫

Day08-javaobject03_侯一鸣

佛贝鲁先生 2022-01-06 阅读 65

Task01

问题

简答题:

结合多态发生的条件,及继承相关知识,自己总结并验证下,哪些方法无法实现多态效果。

答案

1.父类中的private方法(不能被子类覆盖)
2.父类中的构造方法(不能被子类继承)
3.父类中的静态方法(不能被子类覆盖)
4.父类中被final修饰的方法(不能被子类覆盖)

Task02

问题

实现如下多态案例:分别定义Person类,SouthPerson(表示南方人),NorthPerson(表示北方人)

Person
    eat()
SouthPerson
    eat()
NorthPerson
    eat()

写代码实现,eat方法的多态效果

​ 1:人要吃饭

​ 2:南方人吃炒菜和米饭

​ 3:北方人吃烩菜和馒头

代码

package day08.Task02;

public class Task01 {
    public static void main(String[] args) {
        NorthPerson northPerson = new NorthPerson();
        SouthPerson southPerson = new SouthPerson();
        eat(southPerson);
        eat(northPerson);
    }

    public static void eat(Person person){
        person.eat();
    }
}

class Person{
    public void eat(){

    }
}

class SouthPerson extends Person{
    public void eat(){
        System.out.println("南方人吃炒菜和米饭");
    }
}

class NorthPerson extends Person{
    public void eat(){
        System.out.println("北方人吃烩菜和馒头");
    }
}

结果

image-20220106201726058

Task03

问题

为某研究所编写一个通用程序:

用该程序来计算每一种交通工具运行 1000公里所需的时间.已知每种交通工具的参数都是3个整数常量 A、B、C的表达式。

现有两种工具:Car 和Plane,

其中Car 的速度运算公式为:A*B/C,

Plane 的速度运算公式为 :A+B+C。

要求在未来如果增加第3种交通工具(如Ship)的时候,可以做到复用已有代码。 Ship的速度运算公式为 :A+B/C。

这里复用已有代码的意思是,比如专门定义了一个方法,用来计算所有交通工具的,移动指定距离所用 的时间 ,

可以不改变这个方法,继续用它计算新增加的交通工具的运行时间

double calculateTime(int distance, 计算对象) {
    return 计算结果
}

代码

package day08.Task03;

public class Task03 {
    public static void main(String[] args) {
        double A = 5;
        double B = 6;
        double C = 7;
        SpeedFather speedFather;
        speedFather = new CarSpeed();
        System.out.println("汽车的速度为:" + speedFather.speed(A,B,C));
        System.out.println("汽车走完1000公里所需的时间为:" + calculateTime(1000,speedFather.speed(A,B,C)));

        speedFather = new PlaneSpeed();
        System.out.println("飞机的速度为:" + speedFather.speed(A,B,C));
        System.out.println("飞机走完1000公里所需的时间为:" + calculateTime(1000,speedFather.speed(A,B,C)));

        speedFather = new ShipSpeed();
        System.out.println("轮船的速度为:" + speedFather.speed(A,B,C));
        System.out.println("轮船走完1000公里所需的时间为:" + calculateTime(1000,speedFather.speed(A,B,C)));
    }
    public static double calculateTime(int distance, double speed) {
        return distance/speed;
    }
}

class SpeedFather{
    double A;
    double B;
    double C;
    public double speed(double A, double B, double C){
        return 0;
    }

}

class CarSpeed extends SpeedFather{
    public double speed(double A, double B, double C){
        return A*B/C;
    }

}

class PlaneSpeed extends SpeedFather{
    public double speed(double A, double B, double C){
        return A+B+C;
    }

}

class ShipSpeed extends SpeedFather{
    public double speed(double A, double B, double C){
        return A+B/C;
    }

}

结果

image-20220106211706200

Task04

问题

        乒乓球运动员和足球运动员。
        乒乓球教练和足球教练。
        为了出国交流,跟乒乓球相关的人员都需要学习英语。
        请用所学知识:
        分析,这个案例中有哪些抽象类,哪些接口,哪些具体类

乒乓球用运动员 属性 name age salary learnEnglish()

		行为 eat() sleep() train() match()

足球运动员 属性 name age salary

		行为 eat() sleep() train() match()

乒乓球教练: nama age salary bonus

		eat(),sleep(), teach(),learnEnglish()

足球教练: nama age salary bonus

		eat(),sleep(), teach()

代码

package day08.Task04;

public class Task04 {

}

class Human{
    String name;
    int age;
    int salary;

    public Human() {
    }

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

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

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

abstract class Athlete extends Human{
    public abstract void train();
    public abstract void match();
}

abstract class Coach extends Human{
    int bonus;

    public Coach(int bonus) {
        this.bonus = bonus;
    }

    public Coach() {
    }

    public abstract void teach();
}
interface LearnEnglish{
    public void learnEnglish();
}
class TabletennisAthlete extends Athlete implements LearnEnglish{
    public void train(){
        System.out.println(name +  " train table tennis");

    }

    public void match(){
        System.out.println(name +  "match table tennis");
    }

    public void learnEnglish(){
        System.out.println(name + "learn English");
    }
}

class TabletennisCoach extends Coach implements LearnEnglish{
    public void teach(){
        System.out.println(name +  " teach table tennis");

    }

    public void learnEnglish(){
        System.out.println(name + "learn English");
    }
}

class FootballAthlete extends Athlete{
    public void train(){
        System.out.println(name +  " train football ");

    }

    public void match(){
        System.out.println(name +  "match football");
    }

}

class FootballCoach extends Coach {
    public void teach(){
        System.out.println(name +  " teach football");

    }

}
 train(){
        System.out.println(name +  " train football ");

    }

    public void match(){
        System.out.println(name +  "match football");
    }

}

class FootballCoach extends Coach {
    public void teach(){
        System.out.println(name +  " teach football");

    }

}
举报

相关推荐

Day11_file&流_侯一鸣

day08 数组(一)

Day08

寒假-每日一题-day 08

DAY.08

day08

0 条评论