关键字this,static,final,super
关键字this
- 1.this表示调用本类属性
- 只要在类中访问类的属性,一定要加上this关键字
- 2.表示调用本类方法
a.调用普通方法 this.方法名(参数列表)
当有类的继承关系时,表示该类方法一定要加上this关键字
b.调用构造方法 this(参数列表)
@this调用构造方法必须放在构造方法首行
@this调用构造方法不允许成环(比如1调用2,2再调用1)
- 3. 表示当前对象
关键字super
- 1.super用于(子类调用父类)方法
- @ ----用于构造方法
当子类调用父类无参构造时,super()可写,可不写,表示调用父类无参构造 - 当子类调用父类有参构造时,super(参数列表)必须要写,要告诉编译器当前调用的是哪个有参构造
- 子类构造方法中调用父类构造必须是第一行语句
- this与super不能同时调用
- @----用于普通方法super.方法名(参数)
用于在子类中明确调用父类被覆写的方法(不要求必须在第一行语句)
- 2.super用于属性
- super.属性名,表示调用父类中被覆写的属性(权限不是private)
this和super的比较
关键字static
- static 变量–属性(静态属性),用public来修饰
- static属性属于类属性,保存在全局数据区中(方法区–所有对象共享区域),通过类名称调用,与对象实例化无关
- 描述共享属性使用static,不过这种情况用的比较少
- static方法–类方法(静态方法)
- 通过类名调用与对象实例化无关,常见于工具类方法
- static不能用于方法中,局部变量不能用static修饰;它可以修饰静态代码块
- 所有的static方法不允许调用非static定义的属性或方法
- 所有的非static方法允许访问static方法或属性
关键字final
- final关键字–终结器
- 1.final修饰类(String类以及8大基本数据类型的包装类,Integer)
- 当一个类被final修饰,表示该类不能拥有子类(该类不允许被继承)
一旦一个类被final修饰,该类的所有方法都会默认加上final(成员变量不会加final) - 2.final修饰方法
- 当一个方法被final修饰,明确表示该方法不允许被覆写
当一个方法被private修饰后,相当于加了一个final关键字 - 3.final修饰属性-常量
class{
final int a; //在栈中
static final int B;//定义全局常量(在全局常量区)
}
- a.final修饰普通数据类型的成员变量(最主要的用途)
被final修饰的成员变量必须在声明时初始化,并且初始化后值无法被修改
如果在声明时没有初始化,则必须通过构造方法或者构造块中初始化
public static final int B;
static{
B = 10;
}
- final变量-常量(值不能被改变,每个对象都有自己的final变量,在对象产生时初始化)可以在主方法中定义常量
- static final -全局常量(所有对象共享此变量,并且在类加载时初始化,效率较高,通过类名调用)(用静态块初始化)
全局常量命名规范:多个单词全大写,单词间 _ 分隔 - b.final修饰引用数据类型的变量(值不能改变) ,类型也不能变