Java 我可以创建一个从中继承此信息的基类吗?

Java 我可以创建一个从中继承此信息的基类吗?,java,android,inheritance,Java,Android,Inheritance,我的老板最近建议我对我的应用程序中的类使用继承。有一种方法我经常使用,但是。这个类发生了变化 以下是我使用的基本代码: public class CURRENTCLASS extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { @Override protected void onCreate(Bundle savedInstanceState) { supe

我的老板最近建议我对我的应用程序中的类使用继承。有一种方法我经常使用,但是
。这个类发生了变化

以下是我使用的基本代码:

public class CURRENTCLASS extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {

@Override

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_CURRENTCLASS);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(CURRENTCLASS.this, ActivityMenu.class);
            startActivity(intent);
        }
    });

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

}

@Override

public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.about) { //goes to Our company page
        Intent intent = new Intent(CURRENTCLASS.this, ActivityAbout.class);
        startActivity(intent);
    }
    else if (id == R.id.news) { // goes to News and events page
        Intent intent = new Intent(CURRENTCLASS.this, ActivityNewsEvents.class);
        startActivity(intent);
    }
    else if (id == R.id.serve) { // markets we serve
        Intent intent = new Intent(CURRENTCLASS.this, ActivityMarkets.class);
        startActivity(intent);
    }
    else if (id == R.id.seta) { //seta and aquisition support
        Intent intent = new Intent(CURRENTCLASS.this, ActivitySETA.class);
        startActivity(intent);
    }
    else if (id == R.id.software) { //software and systems dev
        Intent intent = new Intent(CURRENTCLASS.this, ActivitySoftware.class);
        startActivity(intent);
    }
    else if (id == R.id.training) { //intelligence analytics and training
        Intent intent = new Intent(CURRENTCLASS.this, ActivityAnalytics.class);
        startActivity(intent);
    }
    else if (id == R.id.QACSTUFF) { //QAC
        Intent intent = new Intent(CURRENTCLASS.this, ActivityQAC.class);
        startActivity(intent);
    }
    else if (id == R.id.careers) { //Careers
        Intent intent = new Intent(CURRENTCLASS.this, ActivityCareers.class);
        startActivity(intent);
    }
    else if (id == R.id.contactUs) { //Contact us
        Intent intent = new Intent(CURRENTCLASS.this, ActivityContact.class);
        startActivity(intent);
    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
    }

}
我在我的大多数类中都使用它,我只是将
CURRENTCLASS
更改为我复制到的任何类。所以,我的问题是,我能不能让这个类成为我继承的类,这样我就可以使用这些方法而不用将它们复制/粘贴到每个类中?如果是的话,是否有人对我将如何做到这一点提供了资源/建议

好的,澄清一下。
在我的android应用程序中,我有15个以上的类,它们都有相同的基本代码,只是略有改变。在代码中,无论在哪里显示“CURRENTCLASS”,我都会将其更改为“ActivityMain”或“ActivityDevelopment”或任何活动。我想知道是否有更有效的方法来实现这一点,可能是通过在我的其他类中使用继承或调用这些方法,而不必复制/粘贴所有这些代码。

您可以创建
BaseActivity
(活动的父类)并在所有活动中扩展该类,然后创建一个带swith case的方法,并在您所有的
onNavigationItemSelected
方法中调用它,因为它是一个您想要从Aj 27继承的完整类。您可以将这些方法放在另一个类中并从中进行扩展,从而获得对其所有方法的访问权,而无需一直复制和粘贴加载的代码

或者,如果您的活动非常简单,并且在功能方面彼此没有太大差异。你可以考虑碎片。因此,使用一个托管导航栏的MainActivity可以有许多片段


我将这个问题标记为一个寻求重构、低质量等问题。如果对代码没有清晰的理解,我的建议是将您的类设置为一个抽象的超类,然后所有子类都可以扩展该类。添加了@lazeri的可能重复项clarification@MuratK. 这不是我要问的-我知道区别,我想知道是否有一种更有效的方法来编写代码,而不是将其复制/粘贴到每个类中。我有点不明白“然后使用switch case创建一个方法,并在所有onNavigationItemSelected方法中调用它”是什么意思我是否在BaseActivity中创建switch方法,然后根据用户所处的活动调用它?在BaseActivity中使用switch case创建一个方法,并从所有onNavigationItemSelected方法调用该方法。啊,这很有意义。非常感谢。不客气:)