什么是继承

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();
    }

}