Java 使用super()或对象访问父类中的变量?
如果您需要任何信息或有一个已解决答案的链接,请随时发布,我将调整/删除我的问题 所以对于comp sci中的赋值,我需要访问父类中的变量。我有点像Java 使用super()或对象访问父类中的变量?,java,inheritance,subclass,private,Java,Inheritance,Subclass,Private,如果您需要任何信息或有一个已解决答案的链接,请随时发布,我将调整/删除我的问题 所以对于comp sci中的赋值,我需要访问父类中的变量。我有点像 //import anything? public class HW6Fraction extends Fraction{ public HW6Fraction(int num, int denom){ super(); } public Fraction add(Fraction f) { //Add method
//import anything?
public class HW6Fraction extends Fraction{
public HW6Fraction(int num, int denom){
super();
}
public Fraction add(Fraction f) { //Add method
int num = super().getNumerator + f.getNumerator();
int denom = super().getDenominator + f.getDenominator();
Fraction result = new Fraction(num, denom);
return result;
}
public Fraction subtract(Fraction f) { //Subtract method
int num = super().getNumerator - f.getNumerator();
int denom = super().getDenominator - f.getDenominator();
Fraction result = new Fraction(num, denom);
return result;
}
}
作为子类和类似的父类:
//Assignment 2 - problem 3, p. 125
/*
Add, subtract, multiply, and divide methods to the Fraction class
(section 3.8). Also, add two more constructors. One of the constructors
will have no parameters; it initializes the fraction to 0/1. The other
constructor will have one parameter, representing the numerator of the
fraction; the denominator of the fraction will be 1. Write a TestFraction
class (similar to the TestAccount class of Section 3.6) that creates two
Fraction objects and tests the behavior of all constructors and instance
methods in the Fraction class.
Logic:
Addition - ((numerator of fraction 1 * denominator of fraction 2) +
(numerator of fraction 2 * denominator of fraction 1)) /
(denominator of fraction 1 * denominator of fraction 2)
Subtraction - ((numerator of fraction 1 * denominator of fraction 2) -
(numerator of fraction 2 * denominator of fraction 1)) /
(denominator of fraction 1 * denominator of fraction 2)
Multiplication - (numerator of fraction 1 * numerator of fraction 2) /
(denominator of fraction 1 * denominator of fraction 2)
Division - (numerator of fraction 1 * denominator of fraction 2) /
(denominator of fraction 2 * numerator of fraction 1)
*/
public class Fraction {
private int numerator; //Numerator of fraction
private int denominator; //Denominator of fraction
public Fraction(int num, int denom) { //Constructor
numerator = num;
denominator = denom;
}
public Fraction() { //Constructor w/ no parameters
new Fraction(0, 1);
}
public Fraction(int num) { //Constructor w/ numerator parameter
numerator = num;
int denom = 1;
}
public int getNumerator() { //getNumerator method
return numerator;
}
public int getDenominator() { //getDenominator method
return denominator;
}
public void setNumerator(int num) { //setNumerator method
numerator = num;
}
public void setDenominator(int denom) { //setDenominator method
denominator = denom;
}
public Fraction add(Fraction f) { //Add method
int num = numerator * f.getDenominator() + f.getNumerator() *
denominator;
int denom = denominator * f.getDenominator();
Fraction result = new Fraction(num, denom);
return result;
}
public Fraction subtract(Fraction f) { //Subtract method
int num = numerator * f.getDenominator() - f.getNumerator() *
denominator;
int denom = denominator * f.getDenominator();
Fraction result = new Fraction(num, denom);
return result;
}
public Fraction multiply(Fraction f) { //Multiply method
int num = numerator * f.getNumerator();
int denom = denominator * f.getDenominator();
Fraction result = new Fraction(num, denom);
return result;
}
public Fraction divide(Fraction f) { //Divide method
int num = numerator * f.getDenominator();
int denom = denominator * f.getNumerator();
Fraction result = new Fraction(num, denom);
return result;
}
}
以下是我遇到的问题:
int num = super().getNumerator + f.getNumerator();
我想知道是否有合适的术语来描述这个问题?您的HW6Fraction类从其父类继承了该方法 所以你可以写:
int num = getNumerator() + f.getNumerator();
如果您的HW6Fraction还声明了一个getNumerator()
方法,并且您希望调用父类中定义的getNumerator()
,则需要执行以下操作:
int num = super.getNumerator() + f.getNumerator();
getNumerator
是一个公共函数,因此任何引用您的类的东西都应该能够调用它,包括所有子类
当您从一个类继承时,您将继承它的所有公共成员和受保护成员,因此它们都应该是您正在处理的子类的一部分。从技术上讲,您不需要在前面放任何特殊的内容,只要调用getNumerator()
就可以了
或者,
this.getNumerator()
将明确声明您需要与当前正在执行的对象关联的getNumerator
函数。这是太多的文本,因为我觉得这是一个非常小的问题。你能把代码浓缩成基本的必需品吗?如果可能的话,创建一个抽象的showcase示例,清楚地概述问题。里面有太多的代码,可能对手头的问题没有任何补充。当然,但我遇到的问题已经解决了。现在我可以继续下一个了。