Java初学者:技术文章(类的继承)
Java是面向对象编程的语言,面向对象的主要目的之一是提供可重用的代码。设想当我们开发一个非常庞大的项目时,重用已有的代码比重新编写要好得多,而且还可以节省时间,避免在程序中引入新的错误所以使用继承可以提高代码的重用性与程序的扩展性。
一般情况下,通过继承派生出的类比设计新类要容易得多。
从一个类派生出另一个类时,原始类称为基类(父类),继承类称为派生类(子类,超类)。
Java中继承的语法格式为:
public class 类名(子类) extends 类名(基类) {
}
当一个子类继承一个父类时,继承的是父类中的属性和方法,并且子类也可以重写父类中的方法,甚至可以在子类中定义父类没有的属性和方法。这样就大大提高了程序的扩展性。
继承可以完成以下几项工作:
1、可以在已有类的基础上添加功能。
2、可以给类添加数据。
3、可以重写类的方法。
需要注意的是,java中一个类只能继承一个其他的类,也就是所谓的单继承。
上面提到了子类可以对父类的方法进行重写,当父类中的方法无法满足子类的需求时,我们需要重写父类的方法来满足我们的需求。
从上面的分析不难发现,重写父类中的方法必须满足以下几个条件:
1、必须要存在一个继承关系。
2、因为是对父类已有方法的重写,所以方法的返回值类型、方法名、参数个数、参数类型、参数顺序必须要和父类的完全一致。
3、子类方法的访问权限只能大于或等于父类方法的访问权限
4、重写方法中的代码和父类的不同。
需要注意的是:在用子类实例化对象调用方法时,调用的会是重写过后子类的方法,如果想要再调用父类的方法,则需要使用关键字super来调用。
下面通过一个简单的例子来说明类的继承的使用:
例:迪迦奥特曼和小怪兽哥斯拉进行PK,直到一方的血量为0时结束战斗;
①:如果迪迦奥特曼胜利,则迪迦奥特曼要和盖亚奥特曼进行K,直到一方的血量为0时结束战斗,输出谁胜利了!
②:如果小怪兽哥斯拉胜利,则小怪兽哥斯拉要和小怪兽A进行K,直到一方的血量为0时结束战斗,输出谁胜利了!
分析:
在此例子下不难发现所涉及到的所有对象(迪迦,盖亚,哥斯拉,小怪兽A)都有共同的属性即:血量,名字,攻击力。他们也都有共同的行为即攻击对方。
所以我们可以定义一个父类(Fighter),父类中定义有属性血量,名字,攻击;定义fight攻击方法。
然后再定义两个子类(分别是小怪兽和奥特曼)继承Fighter类,需要注意的是,在此情景中,两个子类所实例化的对象所要实现的方法和父类所定义的相同,因此没有选择方法的重写。
最后在主程序中用类名初始化对象,给各属性赋值,之后按照要求实现该情景!
以下是代码的实现:
父类Fighter
子类Ult
子类Gri
Manager类