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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Stefan_li 中级黑马   /  2017-12-7 21:53  /  656 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


继承:        关键字 extends

        定义: 多个类有相同的成员变量和成员方法,需抽取多个类中相同部分的成员变量和成员方法到另外一个类(父类),让多个类去 extends 这个父类,此方法叫做继承;


    *** 注: 子父类都是描述现实中的实际存在的事物,所以描述子父类;一定要按照现实名称来描述,做到见名知意;


        特点: 1>Java语言只支持单体继承,一个子类只能继承一个父类;

              2>Java语言支持多层继承;


    *** 注:一个类如果没有继承任何类,那么他默认继承object类


        成员变量:

                特点:   1>.子类只能获取父类中非私有的(private)成员变量;

                        2>.子父类中成员变量名如果在子类没有,直接获取父类的该变量;
                       
                        3>.子父类中成员变量名一样情况下,获取的是子类的成员变量;如果一定要获取父类的成成员变量,得使用 (super.变量名);

                        4>.在子类调用子类成员变量,可以使用this调用子类成员变量,如果当前方法中没有定义跟成员变量一样的局部变量,也可以不使用
                       
                        总之: 在子父类与方法三种情况中,采用就近原则;



        成员方法:
                方法的重载 overload:  定义>> 在一个类中,有多个方法名相同,参数列表/参数类型/参数顺序不同;
    ***                方法的重写 override:  定义>> 在子父类当中,当子类的方法声明与父类的方法声明相同,称方法的重写(覆盖);
               

                特点:       
                        1>.子类只能访问父类非私有方法;

                        2>.子类没有这个方法,调用父类;
                           子类中有这个方法,使用子类的;称作方法的重写;

                        3>.如果一定要在子类中调用父类的方法;在调用方法的时候加上super;
                       
                        4

                应用;在同一个行为中,当父类的行为无法满足子类的行为,此时需要对父类的方法进行重写;

               


                注意事项: 1>.不能重写父类的私有方法

     ***                  2>.子类重写父类方法的时候,权限修饰符必须 >= 父类权限修饰符

                          3>.在子类中,使用this调用方法,如果子类中没有这个方法,默认调用父类的这个方法;

     ***        注解:以@开头,写在类/方法上面  
                        @override 方法的重写注解
                        @overload 方法的重载


                构造方法:

     ***                有子父类继承关系中,子类构造方法的第一行,如果没有调用父类的构造方法,则会
                        默认调用父类的无参构造;

     ***                不管子类构造方法如何调用,第一条输出的肯定是父类构造方法;


        this 和 super的区别:
                this : 当前对象的引用;
                             调用当前类的方法或成员;
                             可在子类的构造方法第一行调用该类的其他构造方法;
                             调用当前类没有定义的变量时,默认调用父类该变量;

                      Super: 子类对父类的方法或变量的引用;
                       调用父类的构造方法
                       super调用构造语句只能放在子类构造方法的第一行中;如在子类构造对象中,没有使用super调用父类构造方法,则默认调用父类构造方法;

    ***        注: 构造方法中第一行输出的语句只能是super/this,且他两不能同时存在;

               父类有两个东西无法继承给子类

                1>.父类私有化成员/方法

                2>.父类构造方法无法继承;只能通过super访问;

               
        继承的优点:
                    1>.提高代码的复用性;
                    2>.提高了可维护性;
              缺点:
                    1>.类与类的耦合性变高;
                    2>开发原则:高内聚低耦合
                    3>.内聚:独立完成事件的能力                    
                    4>.耦合:类与类的关系;
                  
匿名对象: 没有名字的对象;
                右边就是一个匿名对象        new 类名();
         
        当方法只用一次的时候可以使用匿名对象;
        可当做参数进行传递,但无法再参数传递之前做任何事情;
        匿名对象可以调用并赋值;但是没有意义;

        缺点:不利于内存的使用,多次使用匿名对象会减小内存的使用空间;


final(最终): 修饰符;
        被final修饰的类无法继承;

        被final修饰的变量无法修改,但变量需要赋值;即:被final修饰的变量是一个常量;
        称自定义常量;自定义常量必须初始化;

        被final修饰的方法,无法重写;

        常量: 自定义常量->被final修饰的常量; 字面常量

        被final修饰的方法名或常量名都是大写



抽象类:
         abstract 关键字 用于修饰方法和类
         抽象方法: 不同类的方法是相似,但是局土内容又不太一样,所以我们只能抽取他的声明,没有具体的方法,
           没有具体的方法体的方法就是抽象方法;

         有抽象方法的类必须是抽象类;

     *** 注:一个子类继承了一个抽象类,必须完善抽象类的抽象方法,如果不完成,子类就必须是个抽象类


       
       
        特点:
                abstract 只能修饰类与方法       
                抽象方法只能在抽象类里面
                抽象类和抽象方法必须被abstract修饰;
       
     ***         抽象类不能创建对象(不能实例化);
                抽象类中可以有非抽象方法;
     ***        抽象类可以被继承,1>.但子类必须去完善抽象类中的抽象方法,
                                 2>.不然子类必须是抽象类;
       
       
       
        成员特点:
                成员变量:
                        可以有成员变量,
                        可以有常量;
                成员方法:
                        可以有抽象方法;
                        也可以有非抽象方法;
                构造方法:
                        有构造方法,因需要给抽象方法的成员变量初始化;
       

        abstract 不能与final与private/static共存;       
       
   *** 抽象类思想可以规范子类;
        writer:
        charArrayWriter :写入硬盘内;

0 个回复

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