从 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;
    }



}
好的

,这就是我解决这个问题的方式。

在我的梅赛德斯课上,我创建了一个叫做calc的方法。 在我调用的方法中:System.out.print(super.calcMPG(miles,gallons));

回到我的主要方法中,我调用了 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);
        }
    }
}

超类

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;
    }
}

子类丰田

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));
     }
 }

最新更新