2013-10-22 54 views
0

我正在做一些java代码,与朋友一起玩,这成了我们书中向我们抛出的一个问题。继承和重载的构造函数

  • 建立具有名称,年龄的对象人。简单。
  • 用对象行业扩展对象人,其中有工作名称和工资。
  • 使用两个overloaders,一个给予所有信息人和专业 需要。操作简单,用户超(等等)
  • 二overloader被赋予了人的对象和信息,使职业

代码如下几行内容:

Person对象

public class Person 
{ 

private String name; 
private int age; 

public Person(String n, int a) 
{ 
    name=n; 
    age=a; 
} 

} 

职业目标

public class Profession extends Person 
{ 

private String jobName; 
private int salary; 

public Profession(String n, int a, String j, int s) 
{ 
    super(n,a); 
    jobName=j; 
    salary=s; 
} 

public Profession(Person p, String j, int s) 
{ 
    //this is where my problem is 
} 

} 

我不知道是什么与人物相关。有任何想法吗?我会很感激帮助!这不是一个等级,只是一些朋友,我在课堂上获得乐趣。

+1

作出变量的getter然后使用'超(p.getN(),p.getA());' – Craig

+0

否则执行' Person(Person p)'构造函数 – iluxa

+0

我喜欢Person(Person p)的想法,但我会怎么做呢? 至于获得变量,这绝对有效!我忘了我们已经被教过了。 – formn

回答

3

我觉得这里更重要的问题是,继承应该建模是,一个关系。在这种情况下Profession不是 a Person,所以我看不到任何理由为什么Profession将从Person继承。

ProfessionPerson之间的更合理的关系是有-一个,人们 preofessions。那么一个更为现实的阶级结构是:

class Person { 
    private String  name; 
    private int  age; 
    private Profession profession; 

    public Person(String name, int age) { 
     this.name = name; 
     this.age = age; 
    } 

    public setProfession(Profession p) { 
     this.profession = p; 
    } 
} 

class Profession { 
    private String job; 
    private int salary; 

    public Profession(String job, int salary) { 
     this.job = job; 
     this.salary = salary; 
    } 
} 

不同的想法,可能模型的继承关系是ProfessionalPerson,但相信上面的造型是最准确的。

class ProfessionalPerson extends Person { 
    private String job; 
    private int salary; 

    public ProfessionPerson(String name, int age, String job, int salary) { 
     super(name, age); 
     this.job = job; 
     this.salary = salary; 
    } 
} 

此外,你应该总是使用描述变量名,所以任何人阅读你的代码可以决定哪些变量是什么意思。请记住,我遗漏了任何错误处理和默认构造函数。

+0

是的,关键的东西。人不应该用专业来扩展,但如果必须这样做(因为这不是真正的生活项目,而是一些练习),Robin回答说。 – Igor

+0

@我的任务是要求“用对象专业扩展对象人”(即包含专业) –

1

我觉得是这样的:

public Profession(Person p, String j, int s) 
{ 
    super(p.getName(), p,getAge);//asuming you hava getters for name and salary 
    jobName = j; 
    salary = s;   
} 
+0

这是完全不合逻辑的有'Profession'延伸,并具备'Person',它是不是有什么任务要求的OP做 –

0

您可以扩展Person创建ProfessionalPersonProfession(财产)太