Java 像这样使用继承是个坏主意吗
您好,我在编程方面缺乏经验,在android项目中学习缓慢 问题是我在活动中使用了很多相同的代码。使用继承来共享代码是个坏主意吗 例如:Java 像这样使用继承是个坏主意吗,java,android,performance,inheritance,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 pr
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);
}
一般来说,仅将继承用于代码重用不是一个好主意。继承使用“是一个”范例。看看你是否更适合用构图。遵循Matthijs的建议,始终发布您的代码。继承用于表示类属于某个“类别”,例如: 名为“地精”的类扩展了“敌人”类。在“敌人”里面有适用于所有敌人的简单代码(行走、人工智能、攻击等),在“地精”类里面有图形代码,可能是一些对话框、动画或不是所有敌人都共享的东西 在某些情况下,这非常有用,比如控制所有敌人,尽管其中一些实际上是地精或兽人或其他什么。关于代码重用,您可以使用方法来实现,请记住,您的代码必须易于阅读(即使它仅适用于您),因此不要将所有步骤放在一个类中,例如(这将是一个视频游戏示例:P)
即使“移动英雄”和“移动敌人”这样的案例几乎总是一个接一个地应用,将它们组合在一起也不是一个好主意,这样您就可以很容易地知道程序中发生了什么。信息太少,无法说明。如果是为了学习,那就去尝试吧。如果你遇到问题,你会知道这是一个错误的选择。添加了一个我的用法示例。如果你把
Context
作为一个方法参数,你就可以把它移动到某个实用类中。(或者你可以从你的ImageButton
)我同意,一般来说,仅将继承用于代码重用并不是一个好主意,我对官方文档中的声明感到惊讶继承的思想很简单,但功能强大:当您想要创建一个新类,并且已经有一个类包含您想要的一些代码时,您可以从现有类派生新类。通过这样做,您可以重用现有类的字段和方法,而无需自己编写(和调试!)。”()误导性,我认为他们应该更好地使用它。我同意,文档在描述继承的本质方面很薄弱:简言之,使用类B的实例来代替(或者如果您愿意,使用“原样”)类A的一个实例。每次我们试图从类继承时,几个简单的问题都会有帮助:1.派生类是否总是可以用来代替基类?如果不是,继承就没有意义2.派生类是否可以使用基类接口或需要其他接口?如果不是,组合更好3.是否存在减少耦合的另一种方法?如果是,则选择最弱的关系(组合)
nextActivity(a.class, btnA);
toastMessage("example", Toast.LENGTH_SHORT);
while(game == true)
{
getInput();
moveHero();
moveEnemies();
applyGravity();
drawFrame();
}