软件的代码使用继承思想可以缩短软件开发的时间,复用那些已经定义好的类可以提高系统性能,减少系统在使用过程中出现错误的几率。
继承性主要利用特定对象之间的共有属性。在Java语言中奖类似于平行四边形的类称为子类,将类似于四边形的类称为父类或超类。值得注意的是,可以说平行四边形是特殊的四边形,但不能说四边形是平行四边形,也就是说子类的实例都父类的实例,但不能说父类的实例是子类的实例。
父类与子类存在一种层次关系。一个类处于继承体系中,它既可以是其他类的父类,为其他类提供属性和行为,也可以是其他类的子类,继承父类的属性和方法。如三角形既是图形类的子类同时也是等边三角形的父类。
类的继承
在Java语言中,继承通过extends关键字来实现。也就是用extends指明当前类是子类,并指明从哪个类继承而来。即在子类的生命中,通过使用extends关键字来显示的指明其父类。其基本的声明格式如下:
{修饰符}class 子类名 extends 父类名{
类体
}
修饰符:可选参数,用于指定类的访问权限,可选值为public、abstract和final。
子类名:必选参数,用于指定子类的名称,类名必须是合法的Java标识符。一般情况下,要求首字母大写。
extends父类名:必选参数,用于指定要定义的子类继承于哪个父类。
子类具有父类的公开的成员。
继承中的重写
重写是指父子类之间的关系,当子类继承父类中所有可能被子类访问的成员方法时,如果子类的方法名与父类的方法名相同,那么子类就不能继承父类的方法,此时,称为子类的方法重写了父类的方法。重写体现了子类补充或者改变父类方法的能力。通过重写,可以使一个方法在不同的子类中表现出不同的行为。
说明:重写也可以成为覆盖。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package org.hanqi.pn0120; 2 3 public class Father { 4 5 private String name; 6 7 private int age; 8 9 public String getName() { 10 return name; 11 } 12 13 public void setName(String name) { 14 this.name = name; 15 } 16 17 public int getAge() { 18 return age; 19 } 20 21 public void setAge(int age) { 22 this.age = age; 23 } 24 25 public Father() 26 { 27 System.out.println("父类的构造方法"); 28 } 29 30 //工作 31 public void work() 32 { 33 System.out.println("我劳动我光荣"); 34 } 35 36 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package org.hanqi.pn0120; public class TestJiCheng { public static void main(String[] args) { Father f=new Father(); f.setName("父亲"); f.setAge(50); System.out.println("名字是"+f.getName()+" 年龄是"+f.getAge()); f.work(); System.out.println(); Son s=new Son(); s.setName("儿子"); s.setAge(20); System.out.println("名字是"+s.getName()+" 年龄是"+s.getAge()); s.work(); s.sing(); } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package org.hanqi.pn0120; public class Son extends Father { //Object a;所有类的父类 public Son() { System.out.println("子类的构造方法"); } public void sing() { System.out.println("我喜欢唱歌"); } //覆盖(重写) public void work(int i) { System.out.println("我不喜欢上班,我要去参加海选"); } }