一、继承
1、作用:继承是复用程序代码的有力手段。
2、理解继承:当有多个类之间存在相同的属性时,我们可以在这些类中抽取一个父类,当子类继承父类时,子类就能使用父类所有的方法和属性。(子类就无需定义与父类相同的属性)
二、继承的基本语法
1、在java语言中,用关键字Extends来表示一个类继承另一个类
解析:以上代码表明Sub类继承了Base类。那么这个类到底继承了哪些东西?分两种情况分析。
1) 当Sub类和Base类位于同一个包中:
Sub类继承Base类中Public、Protected和默认访问级别的成员变量和成员方法
2) 当Sub类和Base类位于不同的包中:
Sub类继承Base类中Public和protected访问级别的成员变量和成员方法
为了叙述方便,有时会采用“子类继承父类的属性和方法”这样笼统的方法。
3)Eg.假定Sub和Base类位于同一个包中,以下程序演示在Sub类中可继承Base类的哪些成员变量和方法。
注意点:
1)Java语言不支持多继承,一个类只能直接继承一个类。
错误代码如下:
Class Sub extends Base1,Base2,Base3{…….}
1) 尽管一个类只能有一个直接的父类,但是它可以有多个间接地父类
代码如下:
Class base1 extends base2{…..}
Class Sub extends Base1{…..}
三、方法重载
1、重载方法必须满足的条件
1)方法名相同
2方法的参数类型、个数、顺序至少有一项不同
3)方法的返回值类型可以不相同
4)方法的修饰符可以不相同
2Eg
四、方法覆盖
(一)覆盖方法必须满足多种约束
1)子类方法的名称、参数签名和返回类型必须与父类方法的名称、参数签名和返回类型一致。
2)子类方法不能缩小父类方法的访问权限
3)子类方法不能抛出比父类方法更多的异常
4)方法覆盖只存在于子类和父类(包括直接父类和间接父类)之间。在同一各类中方法只能被重载,不能被覆盖。
5)父类的静态方法不能被子类覆盖为非静态方法
6)子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法
7)父类的非静态方法不能被子类覆盖静态方法
8)父类的私有方法不能被子类覆盖
五、super关键字