this
那个对象调用,this就代表那个对象
注意细节
1.this关键字可以用来访问本类的属性、方法、构造器
2.this用于区分当前类的属性和局部变量
3.访问成员方法的语法:this.方法名(参数列表)
4.访问构造器语法:this(参数列表);(只能在构造器中访问另外一个构造器,必须在构造器的第一条语句)
5.this不能在类定义的外部使用,只能在类定义的方法中使用(例如name和this.name在使用的时候,name会根据就近原则查找,而this.name直接定位属性)
super
super代表父类的引用,用于访问父类的属性、方法、构造器
注意细节
1.访问父类的属性,但不能访问父类的private属性 super.属性名
2.访问父类的方法,但不能访问父类的private方法 super.方法名
3.访问父类的构造器 super(参数列表)
方法重写
方法重写就是子类的一个方法和父类的某个方法的名称、返回类型、参数列表一样,那么子类就重写了父类的方法
注意细节(即满足条件)
1.子类的方法的形参列表、方法名,要和父类的形参列表、方法名完全一样
2.子类方法的返回类型和父类方法的返回类型一样,或者是父类返回类型的子类
3.子类方法不能缩小父类方法的访问权限
代码块
注意细节
1.static代码块也叫静态代码块,作用是对类进行初始化,随着类的加载而执行,且只执行一次,普通代码块,每创建一个对象,就执行
2.类什么时候被加载
(1)创建对象实例时(new)
(2)创建子类对象实例,父类也会被加载
(3)使用类的静态成员时(静态属性,静态方法)
(4)main方法执行时
3.普通代码块,在创建对象实例时,会被隐式的调用,被创建一次就调用一次;如果只是使用类的静态成员时,普通代码块并不会执行
4.创建一个对象时,在一个类中的调用顺序是:(重难点)
(1)调用静态代码块和静态属性初始化(优先级一样,按照定义的先后顺序执行)
(2)调用普通代码块和普通属性初始化(优先级一样,按照定义的先后顺序执行)
(3)调用构造器 (每个构造器都有默认构造器super()在第一行,然后调用本类普通代码块)
5.创建一个子类对象时(继承关系),他们的静态代码块、静态属性初始化,普通代码块、普通属性初始化,构造方法的调用顺序如下:
(1)父类的静态代码块和静态属性(优先级一样,按定义顺序执行)
(2)子类的静态代码块和静态属性(优先级一样,按定义顺序执行)
(3)父类的普通代码块和普通属性初始化(优先级一样,按定义顺序执行)
(4)父类构造方法
(5)子类的普通代码块和普通属性初始化(优先级一样,按定义顺序执行)
(6)子类构造方法
6.静态代码块只能直接调用静态成员(静态属性和静态方法),普通代码块(也可以说普通方法,静态是属于类级别的,普通是属于对象级别)可以调用任意成员