Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 超类的继承和构造函数_Java_Constructor - Fatal编程技术网

Java 超类的继承和构造函数

Java 超类的继承和构造函数,java,constructor,Java,Constructor,当我在超级类和子类之间放置箭头时,它会提示: 找不到合适的构造函数(用于超级类对象。在本例中为Date inside Person) 构造函数和继承的故事是什么? 为什么超类在子类中需要构造函数 这里是超类的构造函数: public class Date { protected int _day; protected int _month; protected int _year; public final int MAX_DAY = 31; public

当我在超级类和子类之间放置箭头时,它会提示: 找不到合适的构造函数(用于超级类对象。在本例中为Date inside Person)

构造函数和继承的故事是什么? 为什么超类在子类中需要构造函数

这里是超类的构造函数:

public class Date
{
    protected int _day;
    protected int _month;
    protected int _year;
    public final int MAX_DAY = 31;
    public final int MIN_DAY = 1;
    public final int MAX_MONTH = 12;
    public final int MIN_MONTH = 1;
    public final int DEFUALT_YEAR = 4;

    public Date (int day, int month, int year)
    {
      if( (MIN_DAY <= day) && (day <= MAX_DAY) && (MIN_MONTH <= month) 
      && (month <= MAX_MONTH) && (year == DEFUALT_YEAR))
      {
        this._day = day;
        this._month = month;
        this._year = year;
      }
      else
      {
        this._day = 1;
        this._month = 1;
        this._year = 2000;
      }
    }

    public Date (Date other)
    {
        _day = other._day;
        _month = other._month;
        _year = other._year; 
    } 

您需要调用
super()
,以使构造函数兼容

public class Person extends Date
{
   private String _first;
   private String _last;
   private long _id;
   // private Date _date; Lose the Date as every property of date is accessible here

   public Person (String first, String last, long id, int d, int m, int y)
   {
     super(d, m, y)
     this._first = first;
     this._last = last;
     this._id = id;
    }

    public Person (Person other)
    {
     this._first = other._first;
     this._last = other._last;
     this._id = other._id;
     this._day = other._day;
     this._month = other._month;
     this._year = other._year;
    }
 ...
 }
参考:


Ref:

请标记语言在我看来,您可能应该阅读一些关于继承的教程
public class Person extends Date
{
   private String _first;
   private String _last;
   private long _id;
   // private Date _date; Lose the Date as every property of date is accessible here

   public Person (String first, String last, long id, int d, int m, int y)
   {
     super(d, m, y)
     this._first = first;
     this._last = last;
     this._id = id;
    }

    public Person (Person other)
    {
     this._first = other._first;
     this._last = other._last;
     this._id = other._id;
     this._day = other._day;
     this._month = other._month;
     this._year = other._year;
    }
 ...
 }