本帖最后由 夏夜猫 于 2013-8-26 12:31 编辑
今天学习了面向对象里面关于继承和抽象类的内容,在记熟具体的定义和格式的前提下(多少有点死记硬背的),做题时创建类、继承类、创建方法的思路都比较清晰。。
但是在含main方法调用的类里面,关于具体的调用步骤和思想,还是剪不清理还乱,希望能有人帮我具体解释、梳理下关于通过创建、调用子类的对象完成方法执行的过程。
如下题,是老师课后留在抽象内容后面的作业,做是做出来了,但是关于红色字部分的调用,完全是照葫芦画瓢根据老师上课时的举例模仿的,并没真的理解其规则,绿色字体部分的注释也是自己写的,对不对完全不知道。。这个是不是叫做多态调用?还是叫做通过子类实现父类?具体什么时候创建,怎么执行呢? 现阶段每次做题都是这种很乱的感觉。。
求解答。。{:soso_e183:}
/*使用抽象类知识设计军队模型,包含下列类
军人(ArmyMan):抽象类
指挥官(Commander):抽象类,扩展自军人
将军(General):扩展自指挥官
师长(DivisionCommander):扩展自指挥官
连长(CompanyCommander):扩展自指挥官
排长(PlatoonLeader):扩展自军人
士兵(Soldier):扩展自军人*/
//定义一个类,含有main方法
class Army{
public static void main(String[] args){
//抽象类无法创建实例对象,通过子类继承重写创建,并调用子类的方法实现。
General g = new General();
g.fnFight();
g.fnCommand();
}
}
//定义一个军人(ArmyMan)抽象类,含战斗(fight)方法
abstract class ArmyMan{
abstract void fnFight();
}
//定义一个指挥官(Commander)抽象类,含指挥(command)方法,继承军人(ArmyMan)类
abstract class Commander extends ArmyMan{
abstract void fnCommand();
}
//定义一个将军(General)类,含将军战斗方法和将军指挥,继承指挥官(Commander)类
class General extends Commander{
void fnCommand(){
System.out.println("将军在后方指挥所指挥");
}
void fnFight(){
System.out.println("将军指挥师长战斗");
}
}
//定义一个师长(DivisionCommander)类,含师长战斗方法和师长指挥,继承指挥官(Commander)类
class DivisionCommander extends Commander{
void fnCommand(){
System.out.println("师长在前线指挥所指挥");
}
void fnFight(){
System.out.println("师长指挥连长战斗");
}
}
……
另外,关于抽象类,他的作用体现在哪里,或者说,到底在什么情况下需要创建一个抽象类呢?因为这道题目老师说后面学了接口可以直接用接口做,比用抽象更好,那么抽象类的存在有什么具体意义(用处)呢?
求大神解惑,java基础班新人一只。。
|