你的位置:首页 > Java教程

[Java教程]神奇在于=====》 继承


一、继承

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关键字