3.Java继承

1.继承的概念由来:

1:is a 关系 (学生是人)

2:has a 整体与部分

2.继承的特点:

1:描述类和类之间的关系

2:降低类和类之间的重复代码

3:降低对象和对象之间的代码重复使用静态变量

4:降低类和类之间的代码重复使用就继承

3.继承使用的方法:

1.继承使用extends关键字实现

4.继承细节:

1:类名的设定,被继承的类称之为父类(基类),继承的类称之为子类

2:子类并不能继承父类中所有的成员

        1:父类定义完整的成员 静态成员,非静态,构造方法。静态变量和静态方

          法都可以通过子类名.父类静态成员的形式调用成功。

         2:所有的私有成员不能继承,private修饰的成员。

          3:构造函数不能被继承

3:如何使用继承

             1:不要为了使用继承而继承。工人和学生都有共性的成员,不要为了节省代

           码,让工人继承学生。

4:java只支持单继承

5.Super关键字

1:主要存在于子类方法中,用于指向子类对象中父类对象。

2:访问父类的属性

3:访问父类的函数

4:访问父类的构造函数

6.重写的使用:

1: 在继承中,子类可以定义和父类相同的名称且参数列表一致的函数,将这种函数称之为函数的重写

2.必须要有继承关系

3:当子类重写了父类的函数,那么子类的对象如果调用该函数,一定调用的是重写过后的函数。

可以通过super关键字进行父类的重写函数的调用。

3: 继承可以使得子类增强父类的方法

4.细节:

     1: 函数名必须相同

    2:参数列表必须相同

   3: 子类重写父类的函数的时候,函数的访问权限必须大于等于父类的函数的访问权限否则编译报错

    4:子类重写父类的函数的时候,返回值类型必须是父类函数的返回值类型或该返回值类型的子类。不 能返回比父类更大的数据类型: 如子类函数返回值类型是Object

     5.子类对象查找属性或方法时的顺序:

               (1)就近原则

                      1.如果子类的对象调用方法,默认先使用this进行查找,

                       2.如果当前对象没有找到属性或方法,找当前对象中维护的super关键字指向的对                                象,

                       3.如果还没有找到编译报错,找到直接调用。

7.重写和重载的区别:

1:重载(overload):

       1:前提: 所有的重载函数必须在同一个类中

        2:特点:

             函数名相同,参数列表不同,与其他的无关(访问控制符、返回值类型)

         3:不同:

              个数不同 、 顺序不同、 类型不同

8.instanceof 关键字  (是哪个实例)

9.final常量的使用

1:final关键字主要用于修饰类、类成员、方法、以及方法的形参。

final修饰成员属性:

1:说明该成员属性是常量,不能被修改。public static final double PI=3.14;

       1:public :访问权限最大

       2:static :内存中只有一份

       3:final  :是一个常量

      4:常量名大写

       5:必须初赋值。

2.使用类名.成员。修改该成员的值,报错。--常量不能被修改

     1:基本数据类型,final使值不变

     2:对象引用,final使其引用恒定不变,无法让其指向一个新的对象,但是对象自身却可以被修改。

    3:该关键字一般和static关键字结合使用

           1:常量可以优先加载,不必等到创建对象的时候再初始化。

   4:final和static可以互换位置

   5:常量一般被修饰为final

fianl修饰类:

1:该类是最终类,不能被继承。

    1:将父类加final修饰,子类继承,就会报错。

2:查看api文档发现String类是final的。Integer类也是final的

      1:为了防止代码功能被重写

      2:该类没有必要进行扩展

final修饰方法:

1:该方法是最终方法,不能被重写

2:当一个类被继承,那么所有的非私有函数都将被继承,如果函数不想被子类继承并重写可以将该函数final修饰

3:当一个类中的函数都被修饰为final时,可以将类定义为final的。

你可能感兴趣的:(3.Java继承)