一.super的身份
1.可以充当父类的对象,在子类中调用父类可见的属性和方法
2.可以充当父类构造器,在子类构造器中,调用时需要放在首行。如果调用父类无参构造器,可以省略
注意:
如果父类中定义了一个有参构造器,那么系统默认的无参构造器将被干掉,当子类使用缺省super构造器时,会报错。
所以,在父类中定义有参构造器时,需再提供一个无参构造器
子类构造器内如果没有写super,则默认调用父类无参构造器(先调用父类的,再调用子类的)
二.this的身份:
1.可以充当本类对象,可以去调用本类的属性和方法,this还可以去调用父类的可见属性和方法
2.this可以作为本类对象进行参数传递,在传递时注意this的作用范围,即this代表哪个类的对象
3.this()可以充当本类构造器,在该类构造器中,this()需要放在首行;
当一个类有多个重载构造器时,this()调用构造器需要注意调用的顺序
提问:
三.对象的构造和初始化分析:
1. 声明一个对象,并用new对其进行初始化
2.如果这个对象的类有父类,那么先去执行父类内容(包括代码块构造器)
3.再回到子类中执行子类内容 (包括代码块构造器)
4.如果在构造器中使用this()重载构造器,那么先执行重载构造器,再执行这个构造器
四.初始化块:
1.写法:位于类中,方法外
{....}
2.特点:①优先于构造器执行,如果在一个类中还有静态代码块,那么优先执行静态代码块,后执行初始化快
②每次加载类时都会调用初始化块
3.作用:给类中非静态成员属性赋值
五.封装类:
1.
简单数据类型 | 封装类 |
boolean | Boolean |
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
2.自动装箱、自动拆箱
①Integer i=100; //自动装箱:简单类型引用类型
② int j=new Integer(100); //自动拆箱:引用类型简单类型
3.装箱的范围:
boolean类型的值
所有byte类型的值
在-128~127之间short类型的值
在-128~127之间的int类型的值
在\u0000~\u007F之间的char类型的值
注意上面范围内的数据的自动装箱方式
Integer a=1;//这就是一个自动装箱,如果没有自动装箱的话,需要这样Integer a=new Integer(1)
int b=a;//这就是一个自动拆箱,如果没有自动拆箱的话,需要这样:int b=a.intValue()
这样就能看出自动装箱和自动拆箱是简化了基本数据类型和相对应对象的转化步骤