Возвращение данных из суперкласса в Java

Я читал о суперклассах, абстракции и т. Д. Я понимаю большинство общих идей. У меня есть 3 класса прямо сейчас (основной, суперкласс, подкласс)

Первый класс: получает пользовательские мили и галлоны для типа автомобиля, отправляет данные в подкласс. Подкласс устанавливает данные в переменные.

Я пытаюсь найти способ напечатать мили на галлон для машины. Этот метод расчета лежит в суперклассе, но я не могу найти способ напечатать метод. Вот мой код:

Главный


import java.util.Scanner;
public class StartingPoint {

    public static void main (String[]args)
    {
        Scanner input = new Scanner(System.in); //Get user input

        Mercedes mCar = new Mercedes(); //Accesses subclass of the Car superclass (Mercedes)
        Toyota tCar = new Toyota(); //Accesses subclass of the Car superclass (Toyota)

        System.out.println("Do you own a mercedes or a toyota?"); //Get car type

        String carName = input.nextLine();

        if (carName.charAt(0) == 'm' || carName.charAt(0) == 'M')
        {
            System.out.println("How many miles have you travelled?");
            double miles = input.nextDouble();

            System.out.println("How many gallons have you used?");
            double gallons = input.nextDouble();

            mCar.setGallons(gallons);
            mCar.setMiles(miles);

        }

        else if (carName.charAt(0) == 't' || carName.charAt(0) == 'T')
        {
             //NOT CODED YET
        }

        else 
        {
            System.out.println("Not a valid car name for the system...");
        }





    }

}

Супер класс


public abstract class Car {

    public double calcMPG(double miles, double gallons)
    {
        return (miles/gallons);
    }
}

Подкласс Суперкласс (Автомобиль)


public class Mercedes extends Car {

    private double miles;
    private double gallons;

    public Mercedes()
    {
        miles = 0;
        gallons = 0;
    }

    public void setMiles(double inputMiles)
    {
        miles = inputMiles;
    }

    public void setGallons(double inputGallons)
    {
        gallons = inputGallons;
    }







}

3 ответа

Хорошо, вот как я решил это..

В классе Mercedes я создал метод calc. Внутри метода, который я назвал: System.out.print(super.calcMPG(мили, галлоны));

Вернувшись в свой основной метод, я вызвал mCar.calc();

Таким образом, он успешно рассчитал все данные и распечатал их.

Вы можете сделать это, переопределив toString метод в суперклассе, а затем просто печатать объект с System.out.print, Чтобы сделать это, вам нужно немного перестроить свой суперкласс и подкласс. Я так и сделал, и это работает, но я не уверен, что ты этого хочешь. Надеюсь, это поможет в любом случае.

Основной метод:

package CarProject;

import java.util.Scanner;
public class StartingPoint {

    public static void main (String[]args)
    {
        Scanner input = new Scanner(System.in); //Get user input

        Mercedes mCar = new Mercedes(); //Accesses subclass of the Car superclass (Mercedes)
        Toyota tCar = new Toyota(); //Accesses subclass of the Car superclass (Toyota)

        System.out.println("Do you own a mercedes or a toyota?"); //Get car type

        String carName = input.nextLine();

        if (carName.charAt(0) == 'm' || carName.charAt(0) == 'M')
        {
            System.out.println("How many miles have you travelled?");
            double miles = input.nextDouble();

            System.out.println("How many gallons have you used?");
            double gallons = input.nextDouble();

            mCar.setGallons(gallons);
            mCar.setMiles(miles);

        }

        else if (carName.charAt(0) == 't' || carName.charAt(0) == 'T')
        {
             System.out.println("How many miles have you travelled?");
            double miles = input.nextDouble();

            System.out.println("How many gallons have you used?");
            double gallons = input.nextDouble();

            mCar.setGallons(gallons);
            mCar.setMiles(miles);
        }

        else 
        {
            System.out.println("Not a valid car name for the system...");
        }

        if (carName.charAt(0) == 't' || carName.charAt(0) == 'T') {

            System.out.println("Miles per gallon for your Toyota is " +tCar);

        } else if (carName.charAt(0) == 'm' || carName.charAt(0) == 'M') {

            System.out.println("Miles per gallon for your Mercedes is " + mCar);

        }
    }
}

Superclass

package CarProject;

public class Car {

    double miles;
    double gallons;

    @Override
    public String toString() {
        return String.valueOf(miles/gallons);
    }

}

Подкласс Мерседес

package CarProject;

public class Mercedes extends Car {

    public Mercedes()
    {
        miles = 0;
        gallons = 0;
    }

    public void setMiles(double inputMiles)
    {
        miles = inputMiles;
    }

    public void setGallons(double inputGallons)
    {
        gallons = inputGallons;
    }
}

Подкласс Toyota

package CarProject;

public class Toyota extends Car {

    public Toyota()
    {
        miles = 0;
        gallons = 0;
    }

    public void setMiles(double inputMiles)
    {
        miles = inputMiles;
    }

    public void setGallons(double inputGallons)
    {
        gallons = inputGallons;
    }
}
 import java.io.*;

 class parent {
     int a; //VARIABLE DECLARATIONS IS ALLOWED ONLY HERE

     public void get1() throws Exception {
         DataInputStream in = new DataInputStream(System.in);
         System.out.print("\n ENTER THE INTEGER:");
         a = Integer.parseInt(in.readLine());
     }
 }

 class child extends parent {
     int b; //VARIABLE DECLARATIONS IS ALLOWED ONLY HERE

     public void get2() throws Exception {
         DataInputStream in = new DataInputStream(System.in);
         System.out.print("\n ENTER THE INTEGER:");
         b = Integer.parseInt(in.readLine());
    }
 }

 public class sample {
     public static void main(String args[]) throws Exception {
         child obj = new child();
         obj.get1();
         obj.get2();
         System.out.println("\n SUM="+(obj.a+obj.b));
     }
 }
Другие вопросы по тегам