将不同类的变量继承到一个类中

时间:2014-08-12 09:18:04

标签: java class inheritance

如何继承不同类中存在的变量? 我需要从故障单和事件继承ticket_id和event_id,并检查它们在检查类上是否相同。接下来,我需要在applivation类上创建一个对象,每次在事件或票证类中更改值时,参数都应自行更新。

班级门票

   public class ticket{
    public int ticket_id;
             .
             .
             .
    ticket_id = ...;
    }

班级活动

public class event{
        public int event_id;
                 .
                 .
                 .
        event_id = ...;
       }

班级检查

public class check{

    public check(int ticket_id,int event_id){
    super();
    this.ticket_id = ticket_id;
    this.event_id = event_id;
    }
         .
         .
 getters and setters
         .
         .
         .

}

班级申请

public class Application{
// the parameters must change everytime they change on the previous classes.
check app = new check(ticket_id,event_id);
             .
             .
             .
}

4 个答案:

答案 0 :(得分:1)

继承B意味着A是B,解释:学生将继承自Person,但不是从Date继承,即使他需要一个生日例如,这不是一个很好的例子,但我希望你理解它。所以在这里,检查不应该继承机票或事件,但可能必须使用它们,这是一个很好的方法:

public class check{

public check(Ticket ticket, Event event){
super();
this.ticket = ticket;
this.event = event;
}

并在您的申请中:

public class Application{
   Ticket ticket = new Ticket(..);
   Event event   = new Event(..);
   Check check   = new Check(ticket,event);

         .
         .
         .
}

或者您可以直接使用ticket_idevent_id,如果您只是在某种方法中需要它们,则无需进行检查:

public class check{

public check(){
super();
}

public checking(int ticket_id,int event_id){
      .
      .
      .
}

 public class Application{
   Ticket ticket = new Ticket(..);
   Event event   = new Event(..);
   Check check   = new Check();
   check.checking(ticket.ticket_id,event.event_id);
         .
         .
         .
}

答案 1 :(得分:0)

Java中的多态性仅适用于方法, NOT 适用于变量!

你唯一能做的就是访问超类中的变量,如果它们的可见性允许的话。另一种可能的方法是通过getter / setter访问变量。

答案 2 :(得分:0)

检查应该是这样的

 public class check{
    public check(ticket t,event e){
    this.ticket_id = t.ticket_id;
    this.event_id = e.event_id;
}

我认为这应该有效 试图实施肯特的建议。 @Kent如果您愿意,请随时编辑

答案 3 :(得分:0)

IMO,除了你的多入口之外,这不是使用继承的正确理由。需要。

如果您使用了继承,通常我们可以说

  

"子类型超类型"

。例如。 "

  

教师是(n)员工" ,"员工人员"

等等。

我们并不完全了解您的业务领域,但您可以问自己,

  

" 检查故障单或事件"?

猜测你的回答是否定的。你可能想说,

  

"不,支票不是票证或事件,支票票证,   一个事件"。

如果确实如此,请使用合成而不是继承。

哦,我刚才意识到答案中没有代码......: - )