接口和抽象中的构造函数?

时间:2016-11-23 09:06:02

标签: java android interface abstract-class

所以我想说我有这个界面:

public interface IBox
{
     public void onEvent(int eventType, View control, Object data);
}

我有一个班级访问它:

  public class Rectangle 
    {
    private IBox onEvent;


public Rectangle(Context context, View rowRoot) {
        super(context);
        onEvent = (Rectangle) context;
    }
      @Override

    public void onClick(View v) {

        switch (v.getId()) {
        case R.id.buttonClick:
                // send data : data1 and data2;
                onEvent.onEvent(data1,null, data2);
            break;
    }

我有一个类工具IBox

 public abstract class BaseActivity implements IBox
    {
    @Override
        public void onEvent(int data1, View data, Object data2)
       {
      //do something here
       }
    }

我有类扩展BaseActivity class:

public class HomeBaseActivity extends BaseActivity
{
   // transit Activity here, or send intent....
}

最后我有课程主要扩展HomeBaseActivity

public class HomeActivity extends HomeBaseActivity 
     {

            @Override
            public void onEvent(int data1, View data, Object data2)
           {
          switch (data1) {
           //reciver data1 from class Rectangle
           }
     }
  

我的问题:

     

1,为什么data1可以在HomeActivity类中重现?

     2,任何人都可以解释,帮帮我吗?

     

//一个有垃圾的英语,谢谢

1 个答案:

答案 0 :(得分:0)

我理解您想知道为什么onClick() Rectangle,我们可以将值传递给onEvent()中的HomeActivity,并假设您的活动正在延长{{1} (每个活动都必须扩展Context)。

让我们看看这里。 Context正在扩展HomeActivity,正在实施HomeBaseActivity。基本上,IBox可以强制转换为new HomeActivity()的对象。 [1]

此外,正如我上面的假设,您的活动正在延长IBox [2]

[1] [2] => Context的实例可以投放到HomeActivityIBox

让我们将Context的对象传递给您的HomeActivity(投放到Rectangle)并分配给Context属性(现在转换为onEvent 1}})。

现在,在IBoxonClick()只需调用您在onEvent.onEvent(data1,null, data2);中实施的onEvent()方法。这就是为什么您可以将HomeActivity传递给data1

了解有关Java here中的接口和继承的更多信息。

P / s:如果您在阅读英语时遇到麻烦,请问,我现在可以使用您的母语私下向您解释。尽量提高你的英语水平,至少让每个人都能理解你。因为我们在这里用英语讨论。