java对象和类的初始化过程

类的成员:(1)属性(2)方法(3)构造器(4)代码块
代码块:为属性初始化
1.语法格式
【修饰符】class 类名【extends 父类】
    {
        非静态代码块
    }
    static{
        静态代码块
    }
2.执行的特点
(1)在创建的时候自动执行,每创建一个对象就执行一次,如果有多个代码块,就依次执行
(2)先于构造器执行
(3)非静态代码块与属性的显示赋值,按顺序依次执行
(4)如果创建子类的对象,会先执行父类的(非静态代码块,属性以及构造器)

3,实例化
(1)。java代码编译为。class是会吧代码重构
如果是无惨构造 --> <init>()
如果是有参构造 --> <init>(形参列表)
(2)实例化由三部分组成
属性的显示赋值语句
非静态代码块语句
构造器语句(最后执行,其他顺序执行)
(3)创建子类对象时,会先调用父类的实例化代码

1static是一个关键字,同时是一个修饰符
2可修饰属性,方法,代码块,内部类

修饰属性:用static修饰的属性,称为静态变量或类变量。
静态变量和非静态变量的属性
(1)值的存储位置不同(堆,方法区)
(2)值的初始化时机不同(在<init>()实例化方法中完成,类初始化时,在<clinit>()类初始化方法中完成,早于非静态)
(3)非静态变:每个对象是独立的,各自存一分
    静态变量:所有类共享一份    
(4)生命周期
非:对象的生命周期
:随类的存在而存在

4.static修饰方法,称静态方法,类方法
(1)通过“类名.”调用(建议),当然也可以用“对象.”调用(不建议)
(2)静态方法中不可出现this,super,
(3)静态方法不能直接使用本类中的非静态成员(属性,方法,内部类)
(4)静态方法不可以被重写

5.static修饰静态代码块
代码块的作用,为属性初始化
非静态代码块,为非静态的属性赋值
静态代码块为静态的属性赋值
无论创建几个对象,静态代码块只执行一次,如果有多个,按顺序执行
静态代码块优先于非静态代码块执行,类初始化<clinit>,由静态变量的显示赋值和静态代码块组成,两者按顺序执行。
子类的初始化,如果发现父类还没初始化,会先执行父类的<clinit>

get/set
非静态对应的getset也是非静态的,如果局部变量重名了,用this.区分
静态态对应的getset也是静态的,如果局部变量重名了,用类名.区分

相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页