我对Java相当新,所以我试图实现一个例子,并使用抽象类 但我缺乏面向对象的知识使我想知道为什么我不能使用抽象类中的私有变量“具体”类扩展它。java:抽象类和它的变量
这里是我的代码:
abstract class Equation{
private double[] c;//oefficient
public static int degree(double[] coeff) {
return coeff.length;
}
public abstract double[] solve();
}
class QuadraticEquation extends Equation{
public double[] solve() {
double[] solution;
double discriminant = c[1]*c[1]-4*c[0]*c[2];
if (discriminant < 0) {
solution = new double[] {Double.NaN,Double.NaN};
}
else {
solution = new double[] {(c[1]+Math.sqrt(discriminant))/(2*c[0])
,(c[1]-Math.sqrt(discriminant))/(2*c[0])};
}
return solution;
}
}
我得到的错误是
c has private access in Equation
我可以通过使c
一个public
变量解决这个问题,但我想有一个更好的方式来做到这一点。
底线:如何访问变量c
。
而不是记录什么'c'意味着评论,为什么不首先命名您的变量'系数'?为什么这个变量在基类中定义,因为它根本没有使用它? –
(1)对不起,我忘了重命名它; (2)它在子类中用于计算解 – epsilonhalbe
如果它只用于子类中,则在子类中声明它。 –