java - 私有(private)变量和继承的构造函数

标签 java inheritance constructor private super

我是 Java 新手,所以我可能在这里错过了一些东西 - 我在其他线程中查看,但我没有找到任何与我的问题非常相似的内容。我知道私有(private)变量不会被子类继承。我遇到的问题是,为什么 super();在我的子构造函数中识别我的基本构造函数中的字段?是因为父类中的构造函数是公共(public)的吗?即使它传递的变量是私有(private)的,子构造函数也会识别它们并传递它们吗?如有任何澄清,我们将不胜感激。

父类:

public abstract class BaseQuestion {

private String questions;
private float totalAttempts;
private float averageTime;
private float percentCorrect;

public BaseQuestion(String questions, float totalAttempts, float averageTime, float percentCorrect){
    this.questions = questions;
    this.totalAttempts = totalAttempts;
    this.averageTime = averageTime;
    this.percentCorrect = percentCorrect;
}

子类:

public class TrueFalseQuestion extends BaseQuestion{
public static int questionsCreated;


public TrueFalseQuestion(String question, float totalAttempts, float averageTime, float percentCorrect){
    super(question, totalAttempts, averageTime, percentCorrect);

}

编译器没有给我上面的错误,这让我有点困惑......

谢谢,

最佳答案

子类中的构造函数不能“识别”父类(super class)中的字段,它接收到的一些参数恰好与父类(super class)中的属性同名,但它们在原理上是不同的。它们被分配给父类(super class)的字段,因为您正在调用 super() 来访问父类(super class)的构造函数,仅此而已。

关于java - 私有(private)变量和继承的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11926769/

相关文章:

c++ - 从构造函数中捕获异常意味着我的实例之后超出了范围

java - 在某些情况下删除小于大于标记的 HTML

java - 验证 vaadin 7 网格中的列值

c++ - 复合类 C++ 中的冗余代码

java - 为什么我不能在子类构造函数中添加额外的参数验证?

java - Java 构造函数中有固定参数 - 可能吗?

java - 在 Gradle 中,[如何] 我们应该同时针对 Android 和 JRE?

java - 如何在android中为gridview布局添加页脚

c++ - C++如何继承Template类

c++ - 从基类使用和重新定义 typedef