什么是继承
JAVA世界中也有继承关系,和现实世界中的继承类似。
继承是从已有的类中派生出新类,新的类能吸收已有类的的属性和行为,并拓展新的能力。
继承是面向对象的三大特征之一。
继承提高了软件的复用性。
继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。
降低了程序的耦合性,增加了程序的易维护性。
继承的特点
继承是单继承:一个子类只有一个父类-
继承具有传递性:例如,类A有父类B,类B拥有父类C,则C也可以称为是A的父类(不是直接父类)
方法的重写
当子类出现和父类一模一样的方法时,子类对象调用该方法,会运行子类方法的内容,如同父类的方法被覆盖一样。这种情况是方法的另一种特性—重写。
覆盖的应用
当子类需要父类的功能,而功能主体子类有自己持有的内容时,可以复写父类中的方法,这样,即沿袭了父类的功能,又定义了子类持有的功能。
方法重写的规则
方法名相同
形参列表相同
子类方法的返回值类型应该比父类的返回值类型更小或相等
子类方法抛出的异常类型应该比父类抛出的异常类更小或相等
子类方法的访问权限应该比父类方法的访问权限更大或相等
super关键字
a.super和this的用法很像
b.this代表本类对象的引用
c.super代表父类的内存空间的标识
d.当子父类出现同名成员时,可以用super进行区分
e.子类要调用父类构造方法或者成员方法时,可以用super语句
下面是有关继承的代码
public class 大雁 extends 鸟{
private double wing;//翅膀长度
private double weight;//重量
public 大雁(double wing,double weight) {
this.wing = wing;
this.weight = weight;
}
// public 鸟() {}
public void eat() {
System.out.println("一只"+weight+"KG的大雁正在吃小虫");
}
public void nanFly() {
System.out.println("一只大雁正挥着它"+wing+"米长的翅膀在南飞");
}
public static int fly() {
System.out.println("飞");
return 2;
}
}
public class 鸟 {
private String color;
private int age;
public 鸟() {
}
public 鸟(String color, int age) {
super();
this.color = color;
this.age = age;
}
public static int fly() {
System.out.println("鸟会飞啊");
return 3;
}
// public void eat() {}
}
public class Test鸟 {
public static void main(String[] args) {
// TODO Auto-generated method stub
鸟 a = new 鸟();
大雁 b = new 大雁(18.5,26.3);
b.fly();
}
}