关键字final
修饰变量
* 成员变量:
* 静态 : final修饰的静态成员变量,不能使用默认值,要么直接赋值,要么在静态代码块中进行初始化。
* 非静态: final修饰的非静态成员变量,不能使用默认值,要么直接赋值,要么在构造器、构造代码块中对它进行初始化。
* 局部变量: final修饰的局部变量不能被修改。
final修饰的类不能被继承。
* String类就是由final修饰的。基本类型的封装类也是不能被继承的。
final修饰的方法不能被重写。
* final修饰的方法和私有方法有什么区别?
* 私有方法,既不允许被重写,也不允许被其他类调用。
* final仅仅不能被子类重写,在调用上不受限制。
代码演示:
public class Test2 {
final int NUM=2;
final int NUM2;
final int NUM3;
final static int NUM4=9;
final static int NUM5;
int a;
public static void main(String[] args) {
}
//在构造器中初始化对象的成员变量
public Test2() {
NUM2=4;
}
//构造代码块中初始化对象的成员变量
{
NUM3=7;
}
//静态代码块中可以给静态成员变量赋值。
static {
NUM5=9;
}
}
关键字static:
* static修饰变量和方法 还可以修饰内部类 代码块、
* static修饰的变量:静态成员变量、类变量、
* 【static修饰的变量可以通过类名直接调用,也可以通过对象去调用。】
*
* static修饰的方法:静态成员方法 类方法
* 【static修饰的成员方法,既可以通过类名去调用也可以通过对象去调用】
*
* static修饰的代码块:
* 静态代码块:作用是初始化类。在类加载的时候被自动调用
关键字this:
this代表的是:当前调用方法的对象。
*this的用法:
* 1、区分成员变量和局部变量重名。
* 当局部变量和成员变量重名的时候,使用this调用的一定是成员变量。
* 2、非静态成员方法间的调用。
* this可以省略、
* 如果是静态方法间的调用。实际上是通过类名去调用的。同样的,类名可以省略
* 3、this作为实际参数。
* 4、this作为返回值
this和super的区别:
* 1、this代表当前对象 、super代表父类对象
* 2、this用法:区别成员变量和局部变量 方法间的调用【this可以省略】
* super可以调用父类的成员变量。 super可以调用父类的非静态成员方法
* 3、this和super都是和static冲突的。
* 4、this用于同一类中,构造器间的调用
* super子类调用父类的构造器