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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

子类的实例化过程(继承中的构造关系)
    带子父类关系的构造方法的执行:
        特别注意
            子类实例化不会创建父类的对象         
        子类中所有构造函数默认都会访问父类中无参构造方法,
            子类构造方法的第一行默认都有一个super()语句
            为了对父类的成员进行初始化
            
        这样做的原因:
            构造的作用就是对类中的成员初始化
        
            子类会自动具备父类中的非私有数据,这些数据的初始化靠父类完成,所以会先调用父类
            构造方法完成,子类无论是有参构造还是无参构造都会调用父类中的无参构造
            
        注意:
            如果父类中没有无参构造怎么办?
                可以通过super(参数);去访问父类中的有参构造
                可以通过this(参数);调用本类其他构造(不建议,子类总得保证至少有一个访问父类构造)
                    目的是因为这个构造可以访问父类的某个构造
                子父类构造函数没有重写
                    因为构造方法不被执行
                    
    代码块的执行顺序
        静态代码块
            用static修饰的{}:
                static{
                    //代码
                }
            程序一执行就需连接数据库
            
            如果仅在一个类
                静态代码块-->构造代码块--->构造方法
                    静态代码块仅执行一次,构造代码块和构造方法(调用的)每次创建每次创建对象都执行
            如果是子父类关系的两个类中
                父类的静态代码块--子类的静态代码块--父类构造代码块--父类的构造方法--子类构造代码块---子类构造方法
        方法区:方法,静态区,常量池,代码区

    子类使用父类私有成员的方式
        方式1:子类通过父类的set方法提供公共访问可以给父类的成员变量赋值
        方式2:通过子类调用父类的带参构造方法,并且构造方法里面对私有成员属性进行赋值
        都体现了封装思想
        
        提供了显示的构造方法后,默认的无参构造可以不给(只要用不到),但是建议给因为可能会遇到
        
    final关键字
        很多时候有些内容是不能让子类重写的,
        针对这种情况,我们如果做一个标记,告诉别人这个不可以重写就可以
        java提供了final关键字来标记
        
        final关键字:可以修饰类,修饰成员变量和成员方法
            修饰的类不能被继承(最底层的类):final class
            修饰的成员变量,其实就是一个常量
                常量:
                    字面值常量:
                    定义常量:
                        和定义的格式一样,加final修饰
            修饰的成员方法,方法不能被重写
            
            一旦修饰数据,其内容不会改变
                对于基本数据类型 变量被固化
                对于引用数据类型 地址值被固化(内容可以更改)
            
            finally关键字
            finalize()方法   


            
串讲
    好多的类拥有很多相同属性
   
    继承
        格式:class A extends B
        好处:提高复用性 产生类之间的关系多态前提
        特点(弊端):只支持单继承,避免多继承调用不明确;支持多重继承
        体现:is a 的关系 (同时使用父类中的非私有成员,对象调用也可以)
        注意:
            不要为了使用功能而使用继承
   
    变量查找顺寻
        局部-成员-父类-报错
        
    构造方法
        父类super()或者父类(参数)(子类构造函数的第一行)
        通过this()
        
    方法
        没有重写父类非私有就直接使用
        
        重写
            子父类权限:子类>=父类
            父类中私有不能重写
            静态只能被静态重写
            final修饰的不能重写
            
    代码块执行顺序问题
        一个类
            静态代码块--构造代码块--构造方法
   
    子类使用父类私有成员的方式
        子类使用父类的set方法
        通过父类提供的带参的构造方法,并且构造方法
        
    final关键字
        一旦被初始化将不再发生改变
            一旦修饰数据,其内容不会改变
                对于基本数据类型 变量被固化
                对于引用数据类型 地址值被固化(内容可以更改)

评分

参与人数 1黑马币 +40 收起 理由
小鲁哥哥 + 40 赞一个!

查看全部评分

3 个回复

正序浏览
写的不错,赞一个
回复 使用道具 举报
来赞一个,顶起来
回复 使用道具 举报
帮班长消灭零回复
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马