我是靠谱客的博主 勤恳篮球,最近开发中收集的这篇文章主要介绍JAVA基础——继承,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

            
        概念:把多个类相同的内容提取到另一个类中,然后使用extends关键字来实现继承;
        如何实现:利用java提供的关键字extends实现继承;
        语句格式:class 子类名 extends 父类名{...};
        实现继承关系的前提:至少需要两个类
            class Fu{};
            class Zi extends Fu{};
            这里的Zi是子类,派生类;
            这里的Fu是父类,超类,基类;
        继承的好处:
            1、提高代码的复用性(看父类);
            2、提高代码的维护性,只需修改父类中的内容
            3、让类与类之间产生了继承关系,为后面多态的学习做铺垫;
        继承的坏处:
            1、提高了代码的耦合性(开发的原则:低耦合,高内聚)
                耦合:类与类之间的关系;
                内聚:类自己本身可以完成的事情;
        继承的特点:
            1、Java中的类只支持单个继承,不允许多个继承;
            2、Java中的类支持多层继承(形成一个继承体系)
        使用继承的注意事项:
            1、要想初始化子类,必须先初始化父类*****
                原因:因为子类会继承父类的数据,甚至可能会使用父类的数据,所以在子类初始化之前,
                      一定会先完成父类的初始化(每个子类的构造方法的第一句话默认是super())
            2、子类不能继承父类的私有成员(成员方法,份成员变量);
            3、子类不能继承父类的构造方法,但是可以通过super关键字访问父类的构造方法;
                (因为要想初始化子类,必须先初始化父类,是通过构造方法进行初始化的)
            4、不要为了部分功能去使用继承;
        什么情况下使用继承:
            当两个类满足A类是B类的时候就可以使用继承(并不是学过继承就要一定用继承);
              举例:香蕉是水果;学生是人;
        继承与成员变量之间的关系;
            1、当子类的成员变量的名字和父类的成员变量的名字一致的时候
               查找成员变量原则(就近原则)
               1)现在本方法的局部范围内去找,若找到则返回;
               2)如果在方法局部范围没有找到,就到本类的成员变量中去找,若找到则返回;
               3)如果在本类的成员变量中没找到,就到父类的成员变量中去找,若找到则返回;
               4)如果在父类的成员变量中没有找到,就报错;
            2、当子类的成员变量与父类的成员变量不一致是,使用什么变量名,就访问谁;
        继承与成员方法之间的关系;
            1、当子类的成员方法名和父类的成员方法名一样时,该调用谁的就调用谁的;
            2、当子类的成员方法名和父类的成员方法名一样时:
                1)在本类中中查找,如果有就调用,如果没有就去父类中查找;
                2)如果父类中有就调用父类的,如果父类中都没有要调用的方法名,报错;
        继承中的this和super的区别
            1、访问成员变量
                this.成员变量 访问的是本类中的成员变量
                super.成员变量 访问的是父类中的成员变量
            2、访问构造方法
                this(...) 访问本类中的构造方法
                super(...) 访问父类中的构造方法
            3、访问成员方法
                this.成员方法() 访问本类中的成员方法
                super.成员方法() 访问的是父类中的成员方法
        当父类中没有无参构造方法怎么办?
            1、使用super关键字带参数的形式访问父类的带参数构造方法
            2、子类通过this关键字调用本类的其他构造方法
                 注意,本类其他构造方法也必须可以访问父类拥有的构造方法
                 使用this关键字间接的调用父类的构造方法
                 无论在哪里调用父类的构造方法,只要最后保证在子类构造方法内容执行之前完成了父类的初始化就可以了
            3、super(..)或者this(..)必须出现在第一条语句上
            2、否则就会出现父类的数据进行了多次初始化
                (重点)每个类只能初始化一次
        
        重写:
            在继承中如果子类的声明和父类中的声明一样,这样的现象叫做重写;
            
         面试题:
            重载(overload)和重写(override)的区别:
                1)重写是发生在集成的关系中,重载是发生在本类中的;
                2)重载是在本类中,方法名一样,参数列表不一样就叫重载;
                3)重写是方法名,参数列表,返回值都一致,实现不一样叫做方法的重写;
                
             方法重写的注意事项:
            1、父类中私有的方法不能被重写
            2、子类重写父类的方法时候,访问权限不能更低
                要么子类重写的方法访问权限比父类的访问权限要高或者一样
                建议:以后子类重写父类的方法的时候,权限修饰符写一样就不会发生这样的问题。
            3、父类中静态的方法不能被重写,也就是说不能被Override修饰,因为静态的是属于类本身的东西。
            
            final
                特点:1、修饰类,类不能被继承
                            2、修饰成员变量,变量变常量,并且只能被赋值一次,在构造方法完毕之前赋  值即可;
                          常量 
                               字面值常量
                               自定义常量:被final修饰变量变成自定义常量
                           3、final 修饰成员方法:方法不能被重写
  面试题:
                final修饰局部变量
                1、在方法内部,修饰基本数据类型的变量,变量值只能赋值一次,不能发生改变
                2、final修饰引用数据类型的变量呢?
                    引用的地址值不可以发生改变你,但是该对象的堆内存中的值是可以发生改变的。

最后

以上就是勤恳篮球为你收集整理的JAVA基础——继承的全部内容,希望文章能够帮你解决JAVA基础——继承所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部