java 在子类构造函数中初始化基类字段

2023-12-10

这是一个关于java子类的非常基本的问题,我还是不明白......

假设我有一个包含三个字段且仅包含默认构造函数的超类:

public class Superclass {
    public int a;
    public int b;
    public int c;
}

我想添加一个字段x。我无法改变Superclass,所以我创建一个子类:

public class Subclass extends Superclass {
    public int x;
    public Subclass(Superclass s) {
        super();
        // what to do??
    }
}

我现在想生成一个Subclass来自现有的对象Superclass object:

Superclass s = new Superclass();
s.a = "a";
s.b = "b";
Subclass sc = new Subclass(s);
sc.x = "x";

这样我仍然可以访问sc.a, sc.b etc.

如何最好地做到这一点,而不需要在子类的构造函数中“手动”分配所有这些字段?


您必须在基类构造函数或子类中为变量赋值。

您可以在子类中声明参数化构造函数,以将值分配给超类中的变量

class Subclass extends Superclass {
public int x;
public Subclass(int a,int b, int c,int x) {
    super();
    this.x = x;
    this.a=a;
    this.b=b;
    this.c=c;
 }
}

或者您可以在 BaseClass 和子类中声明一个参数化构造函数,而不是调用super(),调用参数化构造函数super(a,b,c)

class Superclass {
public int a;
public int b;
public int c;

public Superclass(int a, int b, int c) {
    this.a = a;
    this.b = b;
    this.c = c;
 }   
}

class Subclass extends Superclass {
public int x;

public Subclass(int a,int b, int c,int x) {
    super(a,b,c);
    this.x = x;
 }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 在子类构造函数中初始化基类字段 的相关文章

随机推荐

  • Spock:从 CSV 文件读取测试数据

    我正在尝试编写一个优雅的 Spock 规范 该规范将从 CSV 文件中读取非常大的测试数据 而无需将所有数据加载到内存中 我正在寻求您的反馈 以了解如何做得比我目前在这里做得更好 假设我的简化 CSV 文件如下所示 1 2 3 4 5 6
  • 在 Python 列表中的每第 n 个元素之后插入元素

    假设我有一个像这样的 Python 列表 letters a b c d e f g h i j 我想在每个第 n 个元素之后插入一个 x 假设该列表中的三个字符 结果应该是 letters a b c x d e f x g h i x
  • 如何使用本地通知-Xamarin.Android 在服务内调用 BroadCastReceiver

    我正在研究一个报警应用它在预定时间工作 我希望它在用户启动或未启动应用程序时工作 两者 这意味着应用程序将像通常的警报一样发出通知 现在我想打电话给broadcastReceiver里面一个Service这样 它就会执行该操作 我注意到了什
  • 禁用父元素的 onclick 事件

    假设我有一个带有 onclick 事件的元素 其中还有另一个元素 如何禁用子元素的 onclick Example h3 h3
  • 屏蔽电话号码的文本框视图

    我正在尝试格式化一个文本框 以便当用户可以输入电话号码时 它会自动将其设置为以下格式 999 999 9999 我尝试使用 MaskedEditExtender 它可以工作 但它的作用与我需要的完全相反 当我单击该字段时 它显示正确的格式
  • 来自 ES6 类的原型继承[重复]

    这个问题在这里已经有答案了 我有一个旧的代码库 其中充满了某个外部类的子类 使用原型继承 最近 这个外部类已被移植到 ES6 类 但也有我想使用的新功能 原型继承不再起作用 我想知道是否有可能让它起作用 即使它有一些丑陋的黑客 这基本上就是
  • Google 地图 - Android 应用程序未加载 - 空对象引用

    我目前正在尝试开发一个与谷歌地图集成的Android应用程序 目前我很难找到错误 因为代码来自谷歌网站本身 只不过它是一个SupportMapFragment 如果您知道 SupportMapFragment 的实际教程也会很棒 实际 因为
  • mysqli_begin_transaction()和mysqli_autocommit有什么区别

    Does mysqli begin transaction 实现相同的功能mysqli autocommit mysqli autocommit 永久设置自动提交模式 这意味着如果你将其设置为0 然后提交事务 模式将保持为0 mysqli
  • 如何在android中读取特定联系人的收件箱短信?

    我正在尝试读取来自内容提供商的短信 我有以下代码 Uri uri Uri parse SMS URI INBOX String whereClause address String whereArgs address String proj
  • JavaFX EXCEPTION_ACCESS_VIOLATION

    我对 JavaFX 桌面应用程序有疑问 特别是 3D 渲染功能 每次我尝试构建和启动 JavaFX 应用程序时 JVM 都会崩溃 并且会收到类似于以下错误的错误 A fatal error has been detected by the
  • 找不到要加载的 DSO:libhermes-executor-release.so

    log Time Tag Message 15 56 52 131 SoLoader couldn t find DSO to load libjscexecutor so 15 56 54 275 SoLoader couldn t fi
  • 如何在powershell中向异步作业添加回调函数并获取返回数据

    我一直在互联网上搜索并组合了许多不同的代码片段 但我只是没有成功地为我的异步作业创建回调 我的想法是 我想运行多个作业 并且使用回调方法 我将能够解析不同作业的输出 以更改主脚本中的某些状态和输出 目前我有这个 虽然事件被调用 但我无法获得
  • 找不到 JSP 文件可能是 spring 中的一个错误吗

    我在我的应用程序中遵循了 Spring Boot 的官方文件和包结构 但我仍然收到白标签页面错误 大多数答案和建议都不能解决这个问题 这可能是 Spring Boot 中的一个错误吗 下面是我放置代码的方式以及文件和文件夹的排列结构 应用程
  • 自定义视图,不需要 xml 中的layout_width

    Android SDK有TableLayout容器
  • 仅在使用 iTextSharp 进行生产时出现“文档未打开”错误

    我在 iTextSharp 中收到 文档未打开 错误 但仅限于生产环境 该代码在我的开发机器和暂存中运行良好 我在阶段服务器上的 Temp 文件夹中设置了相同的权限 public static byte ConvertHtmlToPdf s
  • 使用 Java 在多个文本文件中查找并替换一个单词?

    如何使用 Java 在多个文本文件中查找并替换单词 这是我为单个人做的方法String public class ReplaceAll public static void main String args String str We wa
  • Android 导航架构组件 - 获取当前可见片段

    在尝试导航组件之前 我曾经手动执行片段事务并使用片段标签来获取当前片段 val fragment MyFragment supportFragmentManager findFragmentByTag tag MyFragment 现在在我
  • 使用 NHibernate 测试连接参数

    我们有一个程序 用户可以在其中指定他们的数据库连接参数 通常的嫌疑人包括主机 端口 用户名 密码和表名 我们使用 NHibernate 连接到数据库 我们想要做的是能够使用 NHibernate 构建配置 然后在继续其他操作之前测试连接参数
  • Dagger2 和依赖组件中的限定符

    我有一个应用程序组件和一个依赖组件 应用程序组件声明显式依赖项 依赖组件可以注入这些依赖项 但是 当我有一个必须使用 Qualifier 消除歧义的依赖项时 依赖组件无法注入该依赖项 这是应用程序组件 Component modules A
  • java 在子类构造函数中初始化基类字段

    这是一个关于java子类的非常基本的问题 我还是不明白 假设我有一个包含三个字段且仅包含默认构造函数的超类 public class Superclass public int a public int b public int c 我想添