Возникли проблемы при написании конструктора для объекта внутри другого класса - PullRequest
0 голосов
/ 23 октября 2011

Пожалуйста, не сердитесь, я рад, что это помощь в моей домашней работе, но мне нравится изучать это и не могу найти это нигде. Я искал это и не мог найти ничего подобного, IDK, если я смотрю во всех неправильных местах или неправильно, у меня есть два других класса внутри моего кода и возникают проблемы при создании другого класса с целями класса внутри него Я покажу, что я пытался, и посмотрю, может ли Йолл помочь мне. Кроме того, я хочу убедиться, что я использую ключевое слово «это» прямо в двух других моих классах. Она хотела, чтобы мы использовали это в нашей программе, и комментарии - это то, что нам говорят:

public class Person
{
        private String lastName;
        private String firstName;

    //default constructor
public Person()
{
lastName= null;
firstName = null;
 }

    //two-parameter constructor 
 public Person(String lastName, String firstName)
{
this.lastName=lastName;
this.firstName=firstName;
}

    //copy constructor
public Person(Person object2)
{
this.lastName=object2.lastName;
 this.firstName=object2.firstName;
 }

    // standard accessor method for each of the two fields

public String getLastName(String lastName)
{
lastName = this.lastName;
 return lastName;
}

public String getFirstName(String firstName)
{
firstName = this.firstName;
return firstName;
}



public void setLastName(String lastName)
{
this.lastName=lastName;
}

public void setFirstName(String firstName)
{
 this.firstName=firstName;
}
        //mutator method for both fields—using standard mutator methods

public void setName(String lastName,String firstName)
{
this.lastName= lastName;
this.firstName = firstName;
}
    //toString method
public String toString()
{
 String str = “Last Name: “ + lastName + “\nFirst Name: “ + firstName;
 return str;
}


//equals method
public boolean equals(Person name2)
{
boolean status;
if (this.lastName.equals(name2.lastName) && this.firstName.equals(name2.firstName))
 status = true;
 else
 status = false;
 return status;
}

    //copy method
public Person copy()
 {
 Person copyObject = new Person(lastName, firstName);
 return copyObject;
 }
 }

public class Date
{    
        private int month;
        private int day;
        private int year;

    //default constructor
public Date()
{
this (0,0,0);
}


    //three-parameter constructor 
 public Date(int month, int day, int year)
{
this.month = month;
this.day = day;
this.year = year;
}


    //copy constructor

public Date(Date object2)
 {
this (object2.month, object2.day,  object2.year);
}


    //standard accessor method for each field
public int getMonth(int month)
{
month = this.month;
return month;
}
 public int getDay(int day)
{
day = this.day;
return day;
}

public int getYear(int year)
{
year = this.year;
return year;
}

    //standard mutator method for each field
 public void setMonth(int month)
 {
this.month = month;
 }
public void setDay(int day)
{
 this.day = day;
 }

 public void setYear(int year)
 {
 this.year = year;
 }

        //mutator method for both fields—using standard mutator methods

 public void setDate(int month, int day, int year)
 {
 this.month = month;
 this.day = day;
 this.year= year;
}


    //toString method

public String toString()
{
 String str = "Date:"  + month+ " " + day + ", " + year;
 return str;
 }


    //equals method
public boolean equals (Date object2)
 {
   boolean status;
   if (this.month == object2.month && this.day == object2.day && this.year ==         object2.year)
    status = true;
    else
    status = false;
    return status;
    }

    //copy method
    public Date copy()
    {
    Date copyObject = new Date(month, day, year);
     return copyObject;
     }
     }

И это то, что я пробовал для моего другого класса, и это показывает ОШИБКУ:

   public class PersonalInfo
    {
            private Person name;
            private Date birthday;
            private int idNumber;
    // the default constructor      
        public PersonalInfo()
    {
         Person name = new Person();
         Date birthday = new Date();
         this.idNumber = 0; 
    }
    // A constructor that passes 6 parameters
      public PersonalInfo(String lastName, String firstName, int month, int day, int year, int idNumber )
      {
          Person name = new Person(lastName, firstName);
          Date birthday= new Date(month, day, year);
          this.idNumber = idNumber;    
      }
    }

Пожалуйста, помогите! И спасибо, что посмотрели

1 Ответ

0 голосов
/ 23 октября 2011

Поскольку вы не указали язык или сообщение об ошибке, это только квалифицированное предположение.Если это не настоящая проблема, предоставьте более подробную информацию.

public PersonalInfo()
{
     Person name = new Person();
     Date birthday = new Date();
     this.idNumber = 0; 
}

Вы объявляете новые локальные переменные name и birthday здесь, а не используете члены класса.Это означает, что ученики никогда не инициализируются, и я подозреваю, что именно об этом пытается сказать ошибка.

Правильный способ сделать это - просто обратиться непосредственно к переменным:

     this.name = new Person();
     this.birthday = new Date();

или, поскольку this подразумевается, когда нет локальной переменной или параметра с таким же именем:

     name = new Person();
     birthday = new Date();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...