如何将类的方法用于新类?

时间:2013-04-05 07:45:20

标签: java

我在A类中有一个菜单方法,它在单击时显示模拟器中的菜单。

如何将该方法用于我的新B类

我希望B类也能使用这些方法:

public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    //inflates the menu or this will show the activity
    MenuInflater awesome = getMenuInflater();
    awesome.inflate(R.menu.main, menu); //main is the xml main

    return true;
}

//this will manipulate the menu
public boolean onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()) {
    case R.id.menuSweet:
        startActivity(new Intent("Sweet"));
        return true;

    case R.id.menuToast:
        Toast andEggs = Toast.makeText(MainActivity.this,
        "This is a toast", Toast.LENGTH_LONG);
        andEggs.show();
        return true;

    default:
        return super.onOptionsItemSelected(item);
    }

}

2 个答案:

答案 0 :(得分:3)

根据你想做的事情,你通常有两个很大的选择(在众多中):子类和组合:

子类

因此,如果您的B类是A类行为的特化(B A的特例),请扩展A类:

class A {
   public boolean onOptionsItemSelected(MenuItem item);
}

class B extends A {
   // some methods only B has.
}

因此你可以致电

B b = new B();
b.onOptionsItemSelected(someItem);

组合物

第二个选项是通过它自己的同名方法将方法调用包装到A(所以B 有一个一个对象并使用它):

class B {
    private A a = new A();

    public boolean onOptionsItemSelected(Item someItem) {
       a.onOptionsItemSelected(someItem);
    }
}

答案 1 :(得分:0)

如果我没有误解,你是否期待这个?

class A
{
    public boolean menu(){
        System.out.println("Inside Menu");
        return true;
    }
}
class B
{
    public void testMethod()
    {
        A a = new A();
        System.out.println(a.menu());
    }
}
public class Test
{
    public static void main(String[] args) {
        B b =new B();
        b.testMethod();
    }
}