【问题标题】:Setting final value in a constructor在构造函数中设置最终值
【发布时间】:2021-03-31 21:00:59
【问题描述】:

我有以下问题。我有两个类 - 一个是基类,pther 继承它。所以在父类中是一个抽象类,它包含三个字段——字符串名称、字符串地址和整数年龄。然而,在我的任务中,它说年龄的值必须默认设置为 25 岁。我的问题是 - 如何在继承类的构造函数中借助继承方法 setAge() 实现这个值? 我的抽象构造函数如下所示:

public Student(String name, String adress, int age){
    this.setName(name);
    this.setAdress(adress);
    this.setAge(age);
}

和二传手:

public void setAge(int age){
    this.age = age;
}

如何在继承类中使用默认值实现?

【问题讨论】:

  • 只需将调用中的默认值从您的子类构造函数传递给super (Student) 构造函数:super(name, address, 25);
  • @Maxouille 不,这不是完全重复的。这个问题增加了超类的方面。
  • 你不应该在构造函数中使用setter。您可以在子类中覆盖该设置器以更改其行为。

标签: java implementation final


【解决方案1】:

如果超类构造函数在其构造函数中接受三个参数,并且您的子类具有一个只有两个参数的构造函数,您可以调用super 将两个参数加上第三个默认值传递给超类的构造函数。

public abstract class Person
{
    // Constructor
    public Person() ( String name, String address, int age ) 
    { …

还有子类。

public abstract class Student
{
    // Constructor
    public Person() ( String name, String address ) 
    { 
        super( name , address , 25 ) ;  // Default age of 25 for new `Student` objects.
        …

这是一个愚蠢的例子,因为默认一个人的年龄不会在实际工作中发生。但所展示的概念是合理的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2018-04-09
    • 1970-01-01
    • 2011-07-12
    • 2014-07-24
    相关资源
    最近更新 更多