你好,我在编程和学习方面经验不足,通过制作一个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);
答案 0 :(得分:3)
一般来说,仅仅为了代码重用而使用继承并不是一个好主意。继承使用“是一种”范式。看看你是否更好地使用Composition。遵循Matthijs的建议,始终发布您的代码。
答案 1 :(得分:0)
继承用于表示某个类属于某个“类别”,例如:
一个名为“goblin”的类扩展了类“敌人”。在“敌人”里面有一个简单的代码适用于所有的敌人(行走,攻击,攻击等),在“地精”类里面有像图形的代码,可能是一些对话,动画或者不是所有敌人共享的东西。 / p>
在某些情况下,这对于控制所有敌人非常有用,尽管其中一些实际上是地精或兽人或其他什么。关于代码重用,您可以使用方法来执行此操作,请记住您的代码必须易于阅读(即使它只适合您)所以不要将所有步骤放在一个类中,例如(它将会是又一个视频游戏示例:P)
while(game == true)
{
getInput();
moveHero();
moveEnemies();
applyGravity();
drawFrame();
}
即使像“moveHero”和“moveEnemies”这样的情况几乎总是一个接一个地应用,但将它们组合在一起并不是一个好主意,因此您可以轻松地告诉您程序中发生了什么。 / p>