A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Zzzack 中级黑马   /  2015-9-22 21:15  /  585 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、代码块
        1、在Java中,使用{}括起来的代码被称为代码块。
        2、分类(根据位置和声明不同)
                A:局部代码块
                        * 在方法中出现;
                        * 用于限定变量生命周期,及早释放变量,提高内存利用率
                B:构造代码块 (初始化块)
                        * 在类中方法外出现;
                        * 多个构造方法方法中相同的代码存放到一起,每个构造方法执行前,都首先执行构造代码块
                C:静态代码块
                        * 在类中方法外出现,并加上static修饰;
                        * 用于给类进行初始化,在加载的时候就执行,并且只执行一次。
                        * 一般用于加载驱动
        3、执行顺序
                静态代码块 --> 构造代码块 --> 构造方法

-----------------------------------------------------------------------------------

二、继承【掌握】
        1、让类与类之间产生子父类关系,这个关系就叫继承。

        2、继承的好处
                A:提高了代码的复用性
                B:提高了代码的维护性
                C:让类与类之间产生了关系,是多态的前提

        3、继承的弊端
                A:类的耦合性增强了。
               
                开发原则:高内聚,低耦合
                耦合:类与类之间的关系(粘性,一个类的改变将会影响到其它相关类)
                内聚:自己完成某件事的能力

        4、特点
                A:Java只支持单继承(一个儿子只能有一个爹)
                B:Java支持多层(重)继承 (继承体系)

        5、注意事项
                A:子类只能继承父类所有非私有的成员(成员方法和成员变量)
                B:子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法。
                C:不要为了部分功能而去继承

        6、什么时候用继承
                类与类之间体现的是一种关系:"is a"
                Person
                    | -- Student
                    | -- Teacher
                水果
                    | -- 苹果
                    | -- 香蕉

        7、继承中成员变量的关系
                A:不同名变量
                B:同名变量
                        a:先从子类的局部范围找
                        b:再从子类的成员范围找
                        c:最后从父类的成员范围找

        8、this和super
                this:代表当前对象的引用,谁来调用我,我就代表谁
                super:代表当前对象父类的引用

                应用:
                A:调用成员变量
                        * this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
                        * super.成员变量 调用父类的成员变量
                B:调用构造方法
                        * this(...)        调用本类的构造方法
                        * super(...)        调用父类的构造方法
                C:调用成员方法
                        * this.成员方法 调用本类的成员方法,也可以调用父类的方法
                        * super.成员方法 调用父类的成员方法

        9、继承中构造方法的关系
                子类中所有的构造方法默认都会访问父类中空参数的构造方法
                为什么?
                        (1)
                             因为子类会继承父类中的数据,可能还会使用父类的数据。
                        所以,子类初始化之前,一定要先完成父类数据的初始化。
                        其实,每一个构造方法的第一条语句默认都是:super();
                        Object类最顶层的父类。
                        (2)
                        A:子类继承父类,子类是为了使用父类的数据(成员变量,成员方法)
                        B:所以,在构造子类对象的时候,必须先初始化父类的数据
                        C:所以,子类的构造方法的第一句,默认是super();
                                但是,万一父类没有空参构造,怎么办?
                                        A: 通过super(.., ..)调用父类的有参构造方法。
                                        B:通过this(.., ..)调用本来的其它的有参构造方法,再通过本类的其它的有参构造方法中的super(.., ..)初始化父类的数据

                        注意:
                                构造方法的第一句,不是super(),就是this(),只能有一个语句(互斥关系)

                注意事项
                        A:如果父类没有无参构造方法,子类怎么办?
                                a:super(...)解决
                                b:this(...)解决
                        B:super(...)和this(...)必须出现在构造方法的第一条语句上
       
        10、继承中成员方法关系
                A:不同名方法
                B:同名方法
                        a:现在子类中找,有就使用
                        b:如果子类中没有,再在父类中找,有就使用
                        c:如果都找不到,就报错

-----------------------------------------------------------------------------------

三、方法重写【掌握】
        1、什么是方法重写
                在子父类中,方法声明(修饰符,返回值,方法名,参数列表)相同的情况。
        2、为什么要有方法重写
                当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法。这样,即沿袭了父类的功能,又定义了子类特有的内容。
        3、注意事项
                A:父类中私有方法不能被重写
                        * 因为父类私有方法子类根本就无法继承
                B:子类重写父类方法时,访问权限不能更低
                        * 最好就一致
                C:父类静态方法,子类也必须通过静态方法进行重写
                        * 其实这个算不上方法重写,但是现象确实如此,
                        至于为什么算不上方法重写,多态中再讲解(静态只能覆盖静态)
        4、面试题
                Override和Overload的区别?
                Overload能改变返回值类型吗?

-----------------------------------------------------------------------------------

四、final关键字【掌握】
        1、是一个关键字,可以用于修饰类,成员变量,成员方法。
        2、特点:
                它修饰的类不能被继承。
                它修饰的成员变量是一个常量。
                它修饰的成员方法是不能被子类重写的。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马