在java中从超类返回数据

在java中从超类返回数据,java,inheritance,superclass,abstraction,Java,Inheritance,Superclass,Abstraction,我读过关于超类、抽象等的书。我理解大部分的一般概念。 我现在有三个类:主类,超类,子类 第一类:获取用户英里数和加仑数作为汽车类型,将数据发送给子类。子类将数据设置为变量 我正在想办法打印汽车每加仑的英里数。此计算方法位于超类中,但我找不到打印该方法的方法。 这是我的密码: 主要 超级级 超类车的子类 好的,我就是这样解决的 在我的Mercedes类中,我创建了一个名为calc的方法。在我调用的方法中: System.out.printsuper.calcMPGmiles,加仑 回到我的主要方法

我读过关于超类、抽象等的书。我理解大部分的一般概念。 我现在有三个类:主类,超类,子类

第一类:获取用户英里数和加仑数作为汽车类型,将数据发送给子类。子类将数据设置为变量

我正在想办法打印汽车每加仑的英里数。此计算方法位于超类中,但我找不到打印该方法的方法。 这是我的密码:

主要

超级级

超类车的子类


好的,我就是这样解决的

在我的Mercedes类中,我创建了一个名为calc的方法。在我调用的方法中: System.out.printsuper.calcMPGmiles,加仑

回到我的主要方法中,我称为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;
    }
}

我把这句话添加到我的主课上,不确定这是不是最好的方法。System.out.printlnMercedes.calcMPGmiles,加仑;我还想我可以在mercedes类中添加一个方法calc,并让它调用super.calcMPGmiles,gallons并打印该方法。。System.out.printlsuper.calcMPGmiles,gallons,然后调用mCar.calc;我不认为使用继承是个好主意。Car超类的唯一目的是使方法calcMPG可用。超类应该有更多的独立用途来证明其合理性。但是我看到您刚刚开始使用Java,所以祝您的实验好运!好的,谢谢你的澄清。我对这种理解还不太熟悉,但我更多地是在试验每件事是如何相互作用的。我希望今天能提高我对这个想法的理解。这行不通,因为超级跑车既不知道行驶里程也不知道加仑数。这些只是传递给它的唯一方法。我改变了一点超类车,现在它已经实现了英里和加仑。每种类型的汽车都继承这些字段,并且可以为每种汽车设置不同的字段。它应该是这样工作的,我也是Java新手,只是想帮你。欢迎来到Stackoverflow,谢谢你回答OP的问题。如果你对你的答案多加一点解释,这将使它对OP和未来的其他读者更加有用。看看如何写出一个好的答案。为你的答案添加更多的解释
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));
     }
 }