Возвращение данных из суперкласса в 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));
}
}