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