构造函数:
特点:
1) 在类对象创建的时候被调用,而且只执行一次
2) 和类同名
3) 没有返回值(不是void) 里面也可以写return; 不可以返回任何内容。
4) 不能手工调用。
5) 可以重载,但是不可以重写。
6) 如果我们设计类的时候,没有提供任何构造函数,系统会为我们生成一个默认的无参的构造函数
7) 如果自定义一个构造函数,则系统不会再生成默认无参的构造函数了。
8) 构造函数的主要作用就是,对类对象进行初始化
static 关键字的特点
被static 在jvm读取class文件时,就对static的属性和函数进行处理.
static 静态的; 脱离对象存在
1) 多个对象共享一份数据资源。(java没有全局变量)
2) static修饰的函数或属性,可以根据类名点的方式去调用。Cat.count;
3) 他修饰的成员,在类加载的时候加载并完成初始化,只执行一次。
4) 无法从静态的上下文中引用非静态属性或者方法。this也不可以在static修饰的上下文中
执行顺序:
静态代码块执行了
构造代码块执行
构造函数执行了
类的加载顺序:
1) 将 Dog.class 这个字节码文件,装载(ClassLoader)到内存中:
2) 将static 修饰的属性在静态区中分配内存空间,完成初始化,并执行static 代码块
3) 在堆内存中分配对象的内存空间:对成员属性 完成默认的初始化操作
4) 执行构造代码块
5) 执行构造函数
6) 对象创建完成将dog这个引用执行堆内存中的地址
继承的好处:
1) 可以简化类的编写,可以复用代码
2) 可以让父类、子类以及后面的孙类之间,形成一个体系,这是多态的基础。
继承的特点:
1) java只支持单继承,不支持多继承(所谓的多继承,是一个类继承多个类)。多层继承。
2)private 成员不能被继承
备注:private 修饰的属性或者方法,只能在本类中调用。即使创建对象也访问不到。
3) 父类对象无法访问子类的属性,子类对象可以访问父类的非私有成员。
4) 如果子类中的成员与父类相同,则子类中的会覆盖父类中的。
5) 构造函数不可以被继承
继承后 父类子类顺序:
父类‐‐‐静态代码块
静态代码块
父类‐‐‐构造代码块
父类‐‐‐构造函数
构造代码块
构造函数
特点:
1) 在类对象创建的时候被调用,而且只执行一次
2) 和类同名
3) 没有返回值(不是void) 里面也可以写return; 不可以返回任何内容。
4) 不能手工调用。
5) 可以重载,但是不可以重写。
6) 如果我们设计类的时候,没有提供任何构造函数,系统会为我们生成一个默认的无参的构造函数
7) 如果自定义一个构造函数,则系统不会再生成默认无参的构造函数了。
8) 构造函数的主要作用就是,对类对象进行初始化
static 关键字的特点
被static 在jvm读取class文件时,就对static的属性和函数进行处理.
static 静态的; 脱离对象存在
1) 多个对象共享一份数据资源。(java没有全局变量)
2) static修饰的函数或属性,可以根据类名点的方式去调用。Cat.count;
3) 他修饰的成员,在类加载的时候加载并完成初始化,只执行一次。
4) 无法从静态的上下文中引用非静态属性或者方法。this也不可以在static修饰的上下文中
执行顺序:
静态代码块执行了
构造代码块执行
构造函数执行了
类的加载顺序:
1) 将 Dog.class 这个字节码文件,装载(ClassLoader)到内存中:
2) 将static 修饰的属性在静态区中分配内存空间,完成初始化,并执行static 代码块
3) 在堆内存中分配对象的内存空间:对成员属性 完成默认的初始化操作
4) 执行构造代码块
5) 执行构造函数
6) 对象创建完成将dog这个引用执行堆内存中的地址
继承的好处:
1) 可以简化类的编写,可以复用代码
2) 可以让父类、子类以及后面的孙类之间,形成一个体系,这是多态的基础。
继承的特点:
1) java只支持单继承,不支持多继承(所谓的多继承,是一个类继承多个类)。多层继承。
2)private 成员不能被继承
备注:private 修饰的属性或者方法,只能在本类中调用。即使创建对象也访问不到。
3) 父类对象无法访问子类的属性,子类对象可以访问父类的非私有成员。
4) 如果子类中的成员与父类相同,则子类中的会覆盖父类中的。
5) 构造函数不可以被继承
继承后 父类子类顺序:
父类‐‐‐静态代码块
静态代码块
父类‐‐‐构造代码块
父类‐‐‐构造函数
构造代码块
构造函数