为了账号安全,请及时绑定邮箱和手机立即绑定

这段代码是否正确地演示了多态性?(爪哇)

这段代码是否正确地演示了多态性?(爪哇)

ITMISS 2021-07-09 18:01:09
我写了一个小程序来练习和演示 Java 中的多态性,所以请看一下,让我知道这个想法是否正确实现。public class Main {    public static void main(String[] args) {        porche porche_car = new porche("Porche 9/11",8,"black");        porche_car.startEngine(true);        porche_car.accelerate(250);        porche_car.brake(true);        Ford ford_car = new Ford("Ford SUV",4,"blue");        ford_car.startEngine(true);        ford_car.accelerate(200);        ford_car.brake(false);    }}public class Car {    private boolean engine;    private String name;    private int cylinders;    private int wheels;    public Car(String name, int cylinders)    {        this.engine = true;        this.name = name;        this.cylinders = cylinders;        this.wheels = 4;    }    public void startEngine(boolean start)    {        if(start)        {            System.out.println(getName()+"Class.Engine Started.");        }        else        {            System.out.println(getName()+" Class.Engine Stopped.");        }    }    public void accelerate(int acceleration)    {            System.out.println(getName()+" class.Accelerating car at " + acceleration + " Km/h");    }    public void brake(boolean applybrake)    {        if (applybrake)        {            System.out.println(getName()+" class called.Brakes applied.");        }        else        {            System.out.println(getName()+" class, brakes released.");        }    }    public boolean isEngine() {        return engine;    }    public String getName() {        return name;    }    public int getCylinders() {        return cylinders;    }    public int getWheels() {        return wheels;    }}public class porche extends Car{    private String color;    private int doors;    public porche(String name, int cylinders, String color) {        super(name, cylinders);        this.color = color;        this.doors = 2;    }    @Override    public void startEngine(boolean start) {        super.startEngine(start);    }
查看完整描述

2 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

演示多态性示例的最佳方法是编写一个接受基类参数的方法,并通过传递子类的对象来重用该方法。


例如 :-


     public class Test{


     public static void main(String[] args){


         Car c = new Car();

        checkCar(c);

        c = new Ferrari();

        checkCar(c);

        c = new Honda();

        checkCar(c);


     }





    public static void checkCar(Car c){


        c.start();

    }

  }


 class Car{


    public void start(){

        System.out.println("Car Starts");

    }


 };


 class Ferrari extends Car{

    public void start(){

        System.out.println("Ferrari Starts");

    }

 };


 class Honda extends Car{

    public void start(){

        System.out.println("Honda Starts");

    }

 };


查看完整回答
反对 回复 2021-07-14
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

首先,您的示例很容易使用多态。正如上面的评论中提到的,您已经从基类调用了方法。您无需覆盖此方法即可在派生类中使用它们。


其次,您在 main 函数中使用派生类作为一种变量,因此您无法注意到多态是如何工作的。您应该改用基类 Car。


Car porche_car = new Porche("Porche 9/11",8,"black");

porche_car.startEngine(true); // uses method from Porsche class if overriden


查看完整回答
反对 回复 2021-07-14
  • 2 回答
  • 0 关注
  • 166 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信