final,static,this,super关键字总结

final关键字(最终的,表示不可修改的)

final关键字主要用作与三个位置,类,方法,变量。

  1. 用作类:表明该类是不可继承的,并且所有成员方法都隐式的指定为final方法。
  2. 用作方法:第一个将方法锁定,以防任何继承类修改它的属性;第二个原因是效率。在早期的java版本中,会将final方法修改为内嵌调用。类中所有的private方法都隐式被指定为final方法。
  3. 变量:表明该变量是不可变的。如果是数值变量,则数值在初始化后不能被修改。如果是引用类型变量,那么该对象之后的引用将不可变。
static关键字(静态的)

static关键字主要用作与四个场景成员变量,成员方法,静态代码块,静态内部类,静态导包。

  1. 变量,方法:被static修饰的成员属于类,不属于这个类的某个对象,被类中所有对象共享,可以使用类名直接调用。静态变量存在于java内存中的方法区。
  2. 静态代码块:在类初始化时就执行,执行顺序(静态代码块->非静态代码块->构造方法),并且不管该类实例多少次,静态代码块只执行一次。
  3. 静态内部类:如果用static修饰类的话只能修饰内部类。静态内部类和非静态内部类最显著的区别就是:非静态内部类在编译完成之后会隐含的保存一个引用,该引用是指向它的外围类。但是静态内部类却没有,没有这个引用就意味着:1.它的创建不需要依赖外围类的创建。2.它不能使用任何外围类非static的方法和变量。
    4.静态导包:直接可以使用import static ***直接导入某个类的静态资源,不必在使用类名调用。
this关键字

this关键字用于引用类的当前实例。
class Manager {
Employees[] employees;

void manageEmployees() {
    int totalEmp = this.employees.length;
    System.out.println("Total employees: " + totalEmp);
    this.report();
}
 
void report() { }

}

在上面的示例中,this关键字用于两个地方:
this.employees.length:访问类Manager的当前实例的变量。
this.report()=:调用类Manager的当前实例的方法。

此关键字是可选的,这意味着如果上面的示例在不使用此关键字的情况下表现相同。 但是,使用此关键字可能会使代码更易读或易懂。

super关键字

super关键字用于从子类访问父类的变量和方法。例如:

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();
    }
}

在上面的例子中,Sub 类访问父类成员变量 number 并调用其其父类 Super 的 showNumber() 方法。

使用 this 和 super 要注意的问题:
在构造器中使用 super() 调用父类中的其他构造方法时,该语句必须处于构造器的首行,否则编译器会报错。另外,this 调用本类中的其他构造方法时,也要放在首行。this、super不能用在static方法中。

被 static 修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享。而 this 代表对本类对象的引用,指向本类对象;而 super 代表对父类对象的引用,指向父类对象;所以, this和super是属于对象范畴的东西,而静态方法是属于类范畴的东西。

你可能感兴趣的:(final,static,this,super关键字总结)