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

我写了一个小程序来练习和演示 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);

    }


ITMISS
浏览 167回答 2
2回答

牛魔王的故事

演示多态性示例的最佳方法是编写一个接受基类参数的方法,并通过传递子类的对象来重用该方法。例如 :-     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");    } };

人到中年有点甜

首先,您的示例很容易使用多态。正如上面的评论中提到的,您已经从基类调用了方法。您无需覆盖此方法即可在派生类中使用它们。其次,您在 main 函数中使用派生类作为一种变量,因此您无法注意到多态是如何工作的。您应该改用基类 Car。Car porche_car = new Porche("Porche 9/11",8,"black");porche_car.startEngine(true); // uses method from Porsche class if overriden
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java