面向对象_继承

面向对象_继承

1、继承

1、概述-什么是继承
     1、多个类中存在相同属性和行为时,将这些内容抽取到单个类中,那么多个类无需再定义属性和行为,只需要继承即可
     2、多个类称为 子类或派生类, 单个类称为父类或者超类
     3、通过extends关键字让他们产生关系
2、继承的好处及特点
     好处:
         1、提高代码的复用性
         2、让类与类产生关系,是多态的前提
     特点:
        1、JAVA 中的类 只支持单继承,不支持多继承。(因为如果可以多继承,就会出现调用不明确的问题)
        2、JAVA支持多 继承 (继承体系)
3、什么时候使用继承
     子类是父类的一种,如果B类是A类的一种就用继承关系
      注意:不要为了获取某个功能而去继承


2、子父类中使用变量时,变量的查找范围

1、首先在局部范围找,有就使用
2、在本类成员位置找,有就使用
3、在父类成员位置找,有就使用,没有就报错

3、this和super比较

      1、概念上的区别
          super代表的是父类内存空间标识
          this代表所在方法所属对象的引用
      2、什么时候使用
          1、当子父类中出现同名成员可以用super区分
          2、子类调用父类的构造方法可以用super  
      3、调用方式
          1、super:   通过 super可以直接调用 类的构造方法,成员变量,成员方法。
                              调用构造方法:super()
                              调用成员变量:super.变量名
                              调用成员方法:super.方法名()
          2、this:      通过 this可以直接调动 类的构造方法,成员变量,成员方法
                              调用构造方法:this()
                              调用成员变量:this.变量名
                              调用成员方法:this.方法名()
     4、注意事项
           1、this代表本类对象的引用
           2、super代表父类内存空间的标志

4、重写override和重载overload

      1、重写override概念
               子父类关系中,子类中存在与父类中 方法声明完全一样的方法叫重写
                一句话:除了方法体以外其他都相同,但是子类修饰符权限要大于等于父类
      2、重载overload概念
               一个类中或者子父类关系中存在多个同名方法,并且参数列表不同的方法 叫重载
                子父类关系中:子类中的方法和父类中的方法构成了重载关系
     3、重写的作用\应用
               当子类需要父类功能,而功能主体有自己特有内容时,可以复写父类中方法,这样即沿袭了父类功能,又定义了子类特有内容
               举例:父亲把武功传给儿子,儿子可以改进该武功,或者不改
      4、注意
               只有方法才存在重写,变量不存在

5、子父类间构造方法特点和注意事项

      1、子类中构造方法的特点
          子类默认构造方法都访问了父类的无参构造方法,子类构造方法中都有默认语句super(),并且默认只能是无参的super()语句
          因为子类会具备父类中非私有数据,这个初始化靠父类完成,所以先调用父类构造方法来初始化父类中的数据
     2、如果父类无无参构造,子类构造如何访问父类构造
          1、通过super(参数)调用父类带参构造方法
          2、通过this(..)调用本类构造方法 //知道就行,一般不用,但是需要注意的是如果一个类中所有的构造方法第一句都调用this(..),这样是错误      
      3、构造方法执行完后会创建该类的对象吗?
          不一定,子类的构造方法第一行调用父类的构造方法时,不会创建对象    
      4、注意     
          构造方法中的this()和super()语句必须放第一行,并且只能取其一

6、子父类间静态代码块,代码块,构造方法执行顺序

      1、优先级
           静态代码块 -> 构造代码块 ->构造方法
     2、执行顺序
           父类静态代码块->子类静态代码块->父类构造代码块->父类构造方法->子类构造代码块->子类构造方法
      3、静态代码块作用
          初始化静态成员变量
      4、构造代码块作用 
          1、初始化非静态成员变量
          2、把所有构造方法中的共性内容抽取出来,提高了代码的复用性

7、子类如何使用父类的私有成员变量

     1、子类调用父类的带参构造访问父类的私有属性,但是只能给父类的私有属性赋值
     2、子类调用父类的set方法给父类中的私有成员变量赋值,通过调用父类的get方法获取父类的成员变量
     3、通过反射操作父类的私有成员(以后讲,比get/set要麻烦很多,这也就体现了封装的好处)

8、final关键字的概述和使用

      1、概述
          很多时候有些方法内容是不能被重写的。而我们知道父类方法声明为public就可以被重写。针对这种情况,我们可以做个标记,告诉别人此类不能被重写
           final 关键字:最终的意思,可以修饰类,成员变量,成员方法
     2、被final修饰的内容的特点
          被final修饰的方法不能被重写
          被final修饰的类不能被继承
          被final修饰的变量其实是常量,命名规则:全部大写,每一个单词间用_分割
      3、常量
          字面值常量 :  ’a’,’aa’,234
          自定义常量:被final修饰的变量
       4、被final修饰的类有哪些
           java.lang.reflect.Array
     boolean的包装类java.lang.Boolean
     byte的包装类java.lang.Byte
     char的包装类java.lang.Character
     double的包装类java.lang.Double
     float的包装类java.lang.Float
     int的包装类java.lang.Integer
     long的包装类java.lang.Long
     short的包装类java.lang.Short
     void的包装类java.lang.Void
     String类java.lang.String
     System类java.lang.System
     Class类java.lang.Class<T>
     编译器java.lang.Compiler类
     Math类java.lang.Math
     两个可变字符序列类java.lang.StringBuffer
     与java.lang.StringBuilder
     Scanner类java.util.Scanner
     正则匹配器java.util.regex.Matcher
     正则表达式编译形式类java.util.regex.Pattern
     5、被final修饰的变量注意事项
          1、被final修饰的变量在创建对象以后不能赋值
          2、被final修饰的变量必须被显示的赋值一次,因为常量在方法区中的常量池中
                    1、在定义变量的时候直接赋值 final NAME = "";
                    2、在构造方法中对它进行赋值
                    3、在构造代码块中对它进行赋值
     6、被final和static同时修饰的成员变量有什么特点
           1、被final和static同时修饰的变量必须被显示的赋值一次,因为常量在方法区中的常量池中
                    1、在定义变量的时候直接赋值 static final NAME = "";
                    2、通过静态代码块赋值
      7、被static修饰的内容随着类的加载而加载,并没有创建对象,那为什么还会有默认的初始化值
          因为他在方法区中的静态方法区中,在这里面的数据也会有默认的初始化值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值