使用像这样的继承是一个坏主意

时间:2013-12-08 11:47:07

标签: java android performance inheritance

你好,我在编程和学习方面经验不足,通过制作一个Android项目。

问题是我在我的活动中使用了很多相同的代码。使用继承共享代码是一个坏主意。

示例:

Class Main extends Activity
       //shared code

           _
Class a     |
Class b     | - extends Main
Class c    _|

我的用法示例:

public class Global extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    setVolumeControlStream(AudioManager.STREAM_MUSIC);
}

public void toastMessage(String tMsg, int tLength) {
    Toast.makeText(getApplicationContext(), tMsg, tLength).show();
}

public void nextActivity(Class<?> classId, ImageButton btnId) {
    AlphaAnimation alpha;
    Vibrator shake = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    if (btnId!= null) {
        alpha = new AlphaAnimation(0.5F, 1.0F);
        alpha.setDuration(50);
        alpha.setFillAfter(false);
        btnId.startAnimation(alpha);
    }
    shake.vibrate(50);
    Intent goToNextActivity = new Intent(getApplicationContext(), classId);
    startActivity(goToNextActivity);
}

a,b,c类可以扩展Global并使用:

  nextActivity(a.class, btnA);
  toastMessage("example", Toast.LENGTH_SHORT);

2 个答案:

答案 0 :(得分:3)

一般来说,仅仅为了代码重用而使用继承并不是一个好主意。继承使用“是一种”范式。看看你是否更好地使用Composition。遵循Matthijs的建议,始终发布您的代码。

答案 1 :(得分:0)

继承用于表示某个类属于某个“类别”,例如:

一个名为“goblin”的类扩展了类“敌人”。在“敌人”里面有一个简单的代码适用于所有的敌人(行走,攻击,攻击等),在“地精”类里面有像图形的代码,可能是一些对话,动画或者不是所有敌人共享的东西。 / p>

在某些情况下,这对于控制所有敌人非常有用,尽管其中一些实际上是地精或兽人或其他什么。关于代码重用,您可以使用方法来执行此操作,请记住您的代码必须易于阅读(即使它只适合您)所以不要将所有步骤放在一个类中,例如(它将会是又一个视频游戏示例:P)

while(game == true)
{
    getInput();

    moveHero();

    moveEnemies();

    applyGravity();

    drawFrame();
}

即使像“moveHero”和“moveEnemies”这样的情况几乎总是一个接一个地应用,但将它们组合在一起并不是一个好主意,因此您可以轻松地告诉您程序中发生了什么。 / p>