final static this super关键字总结
final 关键字
主要用于三个地方:类、方法、变量
- 类:用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法。
- 方法:
- 方法锁定: 防止任何继承了类修改该方法
效率
- 变量: 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
static 关键字
主要为四个地方放: 修饰成员变量和成员方法, 静态代码块、静态内部类、静态导包
修饰静态成员变量和成员方法
被 static 修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享,可以并且建议通过类名调用。被static 声明的成员变量属于静态成员变量,静态变量 存放在 Java 内存区域的方法区。调用格式:
类名.静态变量名
类名.静态方法名()
静态代码块
静态代码块定义在类中方法外, ==静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。 该类不管创建多少对象,静态代码块只执行一次.==
静态内部类
静态内部类与非静态内部类之间存在一个最大的区别: 非静态内部类在编译完成之后会隐含地保存着一个引用,该引用是指向创建它的外围类,但是静态内部类却没有。没有这个引用就意味着:
- 它的创建是不需要依赖外围类的创建。
- 它不能使用任何外围类的非static成员变量和方法。
静态导包
mport static
这两个关键字连用可以指定导入某个类中的指定静态资源,并且不需要使用类名调用类中静态成员,可以直接使用类中静态成员变量和成员方法。```java
import static com.train.keywords.Test.*;public class FinalForKnow {
// final 用于 类 方法 变量 private static final String a = "1123"; public static void main(String[] args) { System.out.println(a); System.out.println(name); System.out.println(age); // 1123 // 维坤坤 // 0 }
}
public class Test {
public static int age;
public static String name = “维坤坤”;
}
### this 关键字
引用类的当前实例
### super 关键字
从子类访问父类的方法和变量
```java
public class Super {
protected int number;
protected showNumber() {
System.out.println("number = " + number);
}
}
public class Sub extends Super {
void bar() {
super.number = 10;
super.showNumber();
}
}
- 在构造器中使用
super()
调用父类中的其他构造方法时,该语句必须处于构造器的首行,否则编译器会报错。另外,this 调用本类中的其他构造方法时,也要放在首行。 - this、super不能用在static方法中。