Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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_Class_Inheritance - Fatal编程技术网

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

Java 将变量从不同类继承到一个类中,java,class,inheritance,Java,Class,Inheritance,如何继承存在于不同类上的变量? 我需要从ticket和event继承ticket\u id和event\u id,并检查它们在check类上是否相同。接下来,我需要在applivation类上创建一个对象,每次事件或票证类中的值更改时,参数都应该更新自己 班票 public class ticket{ public int ticket_id; . . . ticket_id = ...;

如何继承存在于不同类上的变量? 我需要从ticket和event继承ticket\u id和event\u id,并检查它们在check类上是否相同。接下来,我需要在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);
             .
             .
             .
}

Java中的多态性只适用于方法,不适用于变量


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

检查应该是这样的

 public class check{
    public check(ticket t,event e){
    this.ticket_id = t.ticket_id;
    this.event_id = e.event_id;
}
我认为这应该行得通 试图实施肯特的建议。
@肯特,如果你愿意,请随意编辑。

A继承B意味着A是B,解释:学生将从个人继承,但不是从日期继承,即使他需要一个生日,例如,这不是一个很好的例子,但我希望你能理解。因此,在这里,check不应继承自ticket或event,但可能必须使用它们,这是一种很好的方法:

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);

         .
         .
         .
}
或者您可以直接使用
票证id
事件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);
         .
         .
         .
}

依我看,除了你的多重继承之外,这不是使用继承的正确案例。需要

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

“子类型是一个超类型”

。例如。”

教师是(n)员工”,“员工是一个人”

等等

我们不知道你的业务领域,但你可以问问自己

是否检查门票或活动”

我想你的答案是否定的。你可能想说

“不,支票不是票证或事件,支票有票证和 事件”

如果这是真的,那么使用组合而不是继承


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

@1337你是认真的吗?@1337甚至不使用
extends
?@sᴜʀᴇsʜᴀᴛᴛᴀ 不是以OP想要的方式。但是,是的,我知道……)@vagg77 OP希望从多个类继承,这在Java中是不可能的。。您只需要两个ID就可以用于check.constructor,为什么不传入两个对象(或两个ID)?我的check类中有getter和setter