前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java final, static, this, super 关键字总结

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

作者头像
大鹅
发布2021-06-16 17:17:44
4800
发布2021-06-16 17:17:44
举报

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

1. final 关键字

final关键字主要用在三个地方:变量、方法、类。

  • 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
  • 当用final修饰一个时,表明这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法。
  • 使用final 方法的原因有两个:
    1. 把方法锁定,以防任何继承类修改它的含义;
    2. 效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升(现在的Java版本已经不需要使用final方法进行这些优化了)。类中所有的private方法都隐式地指定为final。

2. static 关键字

static 关键字主要有以下四种使用场景:

  1. 修饰成员变量和成员方法: 被 static修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享,可以并且建议通过类名调用。被static 声明的成员变量属于静态成员变量,静态变量 存放在 Java 内存区域的方法区。 调用格式:类名.静态变量名 类名.静态方法名()
  2. 静态代码块: 静态代码块定义在类中方法外, 静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。 该类不管创建多少对象,静态代码块只执行一次.
  3. 静态内部类(static修饰类的话只能修饰内部类): 静态内部类与非静态内部类之间存在一个最大的区别: 非静态内部类在编译完成之后会隐含地保存着一个引用,该引用是指向创建它的外围类,但是静态内部类却没有。 没有这个引用就意味着:
    1. 它的创建是不需要依赖外围类的创建。
    2. 它不能使用任何外围类的非static成员变量和方法。
  4. 静态导包(用来导入类中的静态资源,1.5之后的新特性): 格式为:import static 这两个关键字连用可以指定导入某个类中的指定静态资源,并且不需要使用类名调用类中静态成员,可以直接使用类中静态成员变量和成员方法。

3. this 关键字

this关键字用于引用类的当前实例。 例如:

代码语言:javascript
复制
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的当前实例的方法。

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

4. super 关键字

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

代码语言:javascript
复制
public class Super {
    protected int number;
     
    protected showNumber() {
        System.out.println("number = " + number);
    }
}
代码语言:javascript
复制
    public class Sub extends Super {
        void bar() {
            super.number = 10;
            super.showNumber();
        }
    }

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

使用 this 和 super 要注意的问题:

super 调用父类中的其他构造方法时,调用时要放在构造方法的首行!this 调用本类中的其他构造方法时,也要放在首行。

this、super不能用在static方法中。

简单解释一下:

被 static 修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享。

  • 而 this 代表对本类对象的引用,指向本类对象;
  • 而 super 代表对父类对象的引用,指向父类对象;

所以, this和super是属于对象范畴的东西,而静态方法是属于类范畴的东西。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java 中 final, static, this, super 关键字总结
    • 1. final 关键字
      • 2. static 关键字
        • 3. this 关键字
          • 4. super 关键字
            • 使用 this 和 super 要注意的问题:
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档