黑马程序员技术交流社区

标题: Java08天总结 [打印本页]

作者: CRT    时间: 2016-9-5 23:48
标题: Java08天总结
一、代码块
        1、什么是代码块:
                被{}括起来的就是代码块
       
        2、代码块的分类
                A:局部代码块
                        用来限定变量的生命周期

                B:构造代码块
                        用来初始化成员变量
               
                C:静态代码块
                        用来加载驱动

                D:同步代码块
                        多线程使用

        3、代码块的执行顺序
                1、main方法中的静态代码块
                2、如果你的局部代码块在创建对象之前,这先执行局部代码。否则先执行对象的。
                3、在创建对象时先去执行对象静态代码块
                4、对象中的构造代码块
                5、对象中的构造方法

                注意:静态代码块只执行一次(无论你创建了多少个对象)。因为:该类在方法区中只被加载一次。

二、继承
        1、继承的作用:
                让类与类之间产生关系(子父类关系)。

        2、代表继承的关键字是什么:
                extends : 继承关键字左边是:子类。右边是:父类

        3、继承的好处和弊端
                A:好处
                        提高代码的复用性

                        提高代码的可维护性

                        让类与类之间产生关系是多态的前提


                B:弊端:
                        增强了类与类之间的耦合性

                        开发的原则:高内聚,低耦合

                        高内聚:自己能够完成的事情,不用麻烦别人

                        低耦合:类与类之间密切度

        4、继承的特点:
                A:继承只支持单继承,不支持多继承。但是支持多层继承。

                B:如果想用所有功能,创建最底层类的对象

                C:如果想看共性的内容,看最顶层的类。

        5、继承的注意事项和什么时候去使用继承

                A:继承的注意事项:

                        继承不能继承父类私有的成员。

                        不能继承父类的构造方法。但子类可以访问父类的构造方法(super)

                        不能因为部分功能而去实现继承。
                       
                B:什么时候去使用继承

                        继承是中什么关系"is a",一个类是另一个类的一种。苹果是水果的一种

        6、继承中成员变量的问题

                A:不同名的变量

                        在使用过程中,如果子类没有,那么就去父类中去找。

                B:同名的变量

                        1、变量的使用是在方法中使用。先去找局部变量

                        2、再去中本类中的变量

                        3、再去找父类中的变量

                        4、如果说都有,使用就近原则!

        7、this和super之间的区别

                A:this代表当前对象引用,谁调用我,我就代表谁。

                B:super代表当了类的父类的引用。

                C:super调用的范围:
                       
                        调用成员变量
                                super.成员变量,直接访问的父类的成员变量。

                        调用构造方法

                        调用成员方法

                D:this可以用来调用本类的成员,也可以访问父类的成员(如果本类没有改成员,其实访问的是子类继承下来的)
               
        8、继承中构造方法的关系
               
                A:子类默认会访问父类中空参构造。

                B:为什么是默认就会访问?

                        为了初始化父类。我们使用继承关系,就是为了使用父类中成员。如果父类中的成员没有被初始化,那我们就用不了。
                        为了防止,在我们使用子类的时候,父类没有被初始化。系统会自动初始化。

        9、加载输出
                1,jvm调用了main方法,main进栈

                2,遇到Zi z = new Zi();会先将Fu.class和Zi.class分别加载进内存,再创建对象,当Fu.class加载进内存
                父类的静态代码块会随着Fu.class一起加载,当Zi.class加载进内存,子类的静态代码块会随着Zi.class一起加载
                第一个输出,静态代码块Fu,第二个输出静态代码块Zi

                3,走Zi类的构造方法,因为java中是分层初始化的,先初始化父类,再初始化子类,所以先走的父类构造,但是在执行
                父类构造时,发现父类有构造代码块,构造代码块是优先于构造方法执行的所以
                第三个输出构造代码块Fu,第四个输出构造方法Fu

                4,Fu类初始化结束,子类初始化,第五个输出的是构造代码块Zi,构造方法Zi

        10、继承中方法的问题

                子类方法与父类中方法不同名
                        不同名就是子类中特有方法。
               
                子类方法与父类中的方法同名
                        是重写类父类中的方法。
       
        11、方法重写的概念
                1、有子父类关系
                2、方法的重写要和父类一模一样,方法名一样,返回值类型一样(和返回值类型有关系),参数列表

        12、方法重写的注意事项
                * a:父类中私有方法不能被重写

                        * 因为父类私有方法子类根本就无法继承

                * b:子类重写父类方法时,访问权限不能更低
                        * 最好就一致

                * c:父类静态方法,子类也必须通过静态方法进行重写
                        * 其实这个算不上方法重写,但是现象确实如此,至于为什么算不上方法重写,多态中我会讲解(静态只能覆盖静态)

        13、方法的重载
                1、在同一个类中
                2、方法名相同
                3、参数列表不同
                        参数类型
                        参数顺序
                4、与返回值无关

        14、final 关键字
                1、修饰类,类不能被继承

                2、修饰方法,方法不能被重写

                3、修饰变量,变量是常量,而且只能被赋值一次。会加上两个关键字 public static ,方便我们去使用。

        15、final关键字 在局部变量中的使用
               
                1、如果是修饰基本数据类型,其值不变

                2、如果是修饰引用数据类型,其地址值不变, 对象中的属性值可变。

                3、无论是基本数据类型还是引用数据类型,当作参数进行传递的时候,其值(基本数据类型是值,引用数据类型是地址值)都只能赋值一次。


        16、final 关键字 修饰变的初始化时机

                1、只要调用之前,对其赋值即可。

                2、默认初始化,我们视为无效值。

                3、在对象创建完成自己即可。







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2