JAVA常见关键字(final;static;this;super)

Posted 奔跑的路奇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA常见关键字(final;static;this;super)相关的知识,希望对你有一定的参考价值。

JAVA常见关键字

final

final关键字,意思是最终的、不可修改的,最见不得变化 ,用来修饰类、方法和变量,具有以下特点:

  • final修饰基本类型,只能有一次赋值的机会。一旦存储了一个值,则不让再次改变,相当于一个常量。
  • final修饰引用类型,则变量内的地址引用不让改变。
  • final修饰属性,属性如果没有赋值,有默认值存在的;用final修饰后,必须给属性赋初始值。
  • final修饰方法,表示该方法是最终的方法,不可更改;不能被子类重写final修饰方法,表示该方法是最终的方法,不可更改;不能被子类重写。
  • final修饰类,表示本类不能被继承 。

static

static的特点

   特点: 1 静态元素在类加载的时候就初始化了
		 2 静态元素存储在方法区的静态元素区中
		 3 静态元素只加载一次,全部类对象及类本身调用
	  	 4 静态元素可以通过类名直接访问(属性类的,不属于对象),
		 5 类加载的时候,被static修饰的就加载了,先于对象(new Person();)加载
		 6 静态元素区垃圾回收器无法管理

		 7 非静态成员(堆内存对象里)可以访问静态成员(存在静态元素区中),
		 8 静态成员(属于类)不可以访问非静态成员(属于对象)
		 9 静态元素中不可以使用this或super关键字(this和super是属于对象的)
  • 修饰成员变量和成员方法: 被 static 修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享,并且可以通过类名调用。被static 声明的成员变量属于静态成员变量,静态变量 存放在 Java 内存区域的方法区。调用格式:类名.静态变量名 类名.静态方法名()
  • 修饰代码块: 静态代码块定义在类中方法外, 静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。 该类不管创建多少对象,静态代码块只执行一次.
  • 修饰类:static修饰类的话只能修饰内部类。不能使用任何其他类的非static成员变量和方法。

this

	1,代替的是某个对象-》当前调用属性或方法时的那个对象,不一定是当前类    
	2,this可以调用属性,方法;
	3,this可以调用构造方法(this();),但只能在另一个构造方法体内,只能在程序的第一行           

例如:

class Test{
    Employees[] employees;
     
    void manageEmployees() {
        int empLenght= this.employees.length;
        System.out.println( empLenght);
        this.play();
    }     
    void play() { }
}
  • this.employees.length:访问类Manager的当前实例的变量。
  • this.play():调用类Manager的当前实例的方法。

super

代替的是当前执行方法的对象的父类对象

public class Big{
    protected int num;
     
    protected showNum() {
        System.out.println("num= " + num);
    }
}
 
public class Small extends Big{
    void bar() {
        super.num= 10;
        super.showNum();
    }
}
  • 在上面的例子中,Small 类访问父类成员变量 num并调用其其父类 Super 的 show() 方法。

使用 this 和 super 要注意的问题

  • 在构造器中使用 super() 调用父类中的其他构造方法时,该语句必须处于构造器的首行,否则编译器会报错。另外,this 调用本类中的其他构造方法时,也要放在首行。
  • this、super不能用在static方法中。因为this和super是属于对象的,而对象的加载要依赖于类,所以只有当类加载了,对象才会加载。

最后,如果有问题,希望指正,一起进步。

以上是关于JAVA常见关键字(final;static;this;super)的主要内容,如果未能解决你的问题,请参考以下文章

Java基础_final和static区别

Java基础 -- 关键字Static和Final

Java之static与final关键字

详解Java中static关键字和final关键字的功能

PHP 面向对象中常见关键字使用(finalstaticconst和instanceof)

PHP 面向对象中常见关键字使用(finalstaticconst和instanceof)