[英]Java hw help: Superclass and attributes
我有一个作业,其中必须显示类的所有属性。
我的问题是,在不必向人员对象添加额外属性的情况下,如何使代码正常工作?
我可以使用代码,但显然我不应该对原始人员类进行任何更改。 这是:
class person
{
String firstName;
String lastName;
int age;
person(String informedFirstName, String informedLastName, int informedAge)
{
firstName = informedFirstName;
lastName = informedLastName;
age = informedAge;
}
String whatIsUp()
{
return "undetermined";
}
String getName()
{
return firstName +" "+lastName;
}
String getAge()
{
String str = String.valueOf(age);
return str;
}
String getInfo()
{
return ("Name = "+ getName() + " age="+ getAge());
}
}
我的工作代码是:
应用程式类别
class app
{
public static void main(String[] args)
{
student st1 = new student("Zack","Mills",21,".....");
professor p1 = new professor("Fred","Fonseca",44,".....");
TA ta1 = new TA("Paris","Hilton",20,"......");
System.out.println(st1.getInfo());
System.out.println(p1.getInfo());
System.out.println(ta1.getInfo());
}
}
人类:
class person
{
String firstName;
String lastName;
int age;
String status;
person(String informedFirstName, String informedLastName,
int informedAge, String informedStatus) //< ---- added attribute informedStatus
{
firstName = informedFirstName;
lastName = informedLastName;
age = informedAge;
status = informedStatus;
}
String whatIsUp()
{
return "undetermined";
}
String getName()
{
return firstName +" "+lastName;
}
String getAge()
{
String str = String.valueOf(age);
return str;
}
String getStatus(){
return status;
}
String getInfo()
{
return ("Name = "+ getName() + " age="+ getAge()) + getStatus();
}
}
学生班:
class student extends person
{
String status;
student(String informedFirstName, String informedLastName, int informedAge, String informedStatus)
{
super(informedFirstName, informedLastName, informedAge, informedStatus);
if (age <= 25) status = informedStatus = "Traditional";
else status = informedStatus = "Non-Traditional";
}
String whatIsUp()
{
int n = 0;
String b = "...";
n = (int) (Math.random()*2);
if (n == 0) b = "reading";
if (n == 1) b = "talking";
return b;
}
String getStatus()
{
return " Status = " + status;
}
}
教授班:
class professor extends person
{
String status;
professor(String informedFirstName, String informedLastName, int informedAge, String informedStatus)
{
super(informedFirstName, informedLastName, informedAge, informedStatus);
status = informedStatus = "Computer Science";
}
String whatIsUp()
{
int n = 0;
String b = "...";
n = (int) (Math.random()*2);
if (n == 0) b = "reading";
if (n == 1) b = "talking";
return b;
}
String getStatus()
{
return " Degree = " + status;
}
}
TA班:
class TA extends person
{
String status;
TA (String informedFirstName, String informedLastName, int informedAge, String informedStatus)
{
super(informedFirstName, informedLastName, informedAge, informedStatus);
status = informedStatus = "Excellent";
}
String whatIsUp()
{
int n = 0;
String b = "...";
n = (int) (Math.random()*2);
if (n == 0) b = "reading";
if (n == 1) b = "talking";
return b;
}
String getStatus()
{
return " Communication Skills = " + status;
}
}
对不起,所有代码和任何帮助将不胜感激。
我不确定在人员类中再添加一个属性是什么问题。 但是,如果您不想触摸它,我建议您选择一种方法。
制作一个类personExtension以扩展人。 将新的status属性添加到该类。 现在将新的personExtension类扩展为TA,学生和教授。
class personExtension extends person
{
String status;
personExtension(String informedFirstName, String informedLastName, int informedAge, String informedStatus)
{
super(informedFirstName,informedLastName,informedAge);
status = informedStatus;
}
}
实际上,通过使来自studen
的类扩展person
并在新的类中具有新的属性status
,您可以完成所有操作。 这样做,您将拥有一类,该类具有person
所有属性,包括添加的新属性。
只需从人员中删除属性status
,然后根据需要将其保留不变。
在student
的构造函数中,使用super
关键字传递person
的属性。
student(String informedFirstName, String informedLastName, int informedAge,
String informedStatus)
{
super(informedFirstName, informedLastName, informedAge);
if (age <= 25) status = informedStatus = "Traditional";
else status = informedStatus = "Non-Traditional";
}
班级student
对象将使您可以访问所有属性
student s = new student("John", "Doe", 25, "some status");
仅作为一项补充,请尝试遵守Java命名约定,类名应以大写字母开头。
编辑
要让getInfo()
返回一个包含状态的字符串,您还必须在子类student
重写该方法,并再次使用super
关键字从person
调用getInfo()
并将status
到该方法。
@Override
String getInfo()
{
return super.getInfo() + " " + getStatus(); // or jsut: + " " + status;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.