this、super、static和final关键字总结

本文深入解析Java中的this、super、static和final关键字,探讨它们在类、构造方法和成员变量中的应用,以及如何影响对象的创建和访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 this关键字

  • 调用本类中定义的成员变量,如果本类中没有,则继续从父类中查找。

  • 调用本类中定义的成员方法

  • 在本类的构造方法中调用本类其他构造方法,调用时要放在构造方法的首行

    public class Student { //定义一个类,类的名字为student。 
        public Student() { //定义一个方法,名字与类相同故为构造方法
            this(Hello!);
        }
        public Student(String name) { //定义一个带形式参数的构造方法
        }
    }
    

this 的本质就是“创建好的对象的地址”!由于在构造方法调用前,对象已经创建。因此,在构造方法中也可以使用 this 代表“当前对象”。
普通方法中,this 总是指向调用该方法的对象。构造方法中,this 总是指向正要初始化的对象。
this 不能用于 static 方法中。

2 super关键字

  • 调用父类中定义的成员变量

  • 调用父类中定义的成员方法

  • 在子类的构造方法中调用父类的构造方法,调用时要放在构造方法的首行

    // 子类
    public class Student extends Person{ //定义一个类,类的名字为student。 
        public Student() { //定义一个方法,名字与类相同故为构造方法
            super(Hello!);  //调用父类的构造方法
        }
    }
    // 父类
    public class Person{
        public Person(String name) { //定义一个带形式参数的构造方法
        }   
    }
    

super“可以看做”是直接父类对象的引用。可以通过 super 来访问父类中被子类覆盖的方法或属性。
this和super总结:

  • 在构造器中,this和super只能出现一个
  • 当构造器中不显式调用super和this中的一个,默认调用的是父类无参的构造方法。没有父类的话调用object类的无参构造方法。所以子类拥有父类中的所有属性和方法,但是由于权限的限制,在子类中无法访问父类中被某些权限限定符修饰的属性和方法。

this和super的区别

区别点thissuper
1访问属性访问本类中的属性,如果本类中没有此属性,则从父类中继续查找访问父类中的属性
2调用方法访问本类中的方法直接访问父类中的方法
3调用构造器调用本类构造器,必须放在构造器的首行调用父类构造器,必须放在子类构造器的首行
4特殊表示当前对象无此概念

3 static关键字

在类中,用 static 声明的成员变量为静态成员变量,也称为类变量。 类变量的生命周期和类相同,在整个应用程序执行期间都有效。它有如下特点:

  • 为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化。
  • 对于该类的所有对象来说,static 成员变量只有一份。被该类的所有对象共享!!
  • 一般用“类名.类属性/方法”来调用。(也可以通过对象引用访问静态成员)
  • 在 static 方法中不可直接访问非 static 的成员。成员方法可以直接访问成员变量、成员方法、静态变量和静态方法。静态方法不可以直接访问成员变量和成员方法,只能直接访问静态变量和静态方法。

构造方法用于对象的初始化!静态初始化块,用于类的初始化操作!在静态初始化块中不能直接访问非 static 成员。

静态初始化块执行顺序

  • 上溯到 Object 类,先执行 Object 的静态初始化块,再向下执行子类的静态初始化块,直到类的静态初始化块为止。
  • 构造方法执行顺序和上面顺序一样!!

4 final关键字

final 关键字的作用:

  • 修饰变量: 被它修饰的变量不可改变。一旦赋了初值,就不能被重新赋值。
final int MAX_SPEED = 120;
  • 修饰方法:该方法不可被子类重写。但是可以被重载!
final void study(){}
  • 修饰类: 修饰的类不能被继承。比如:Math、String 等。
final class A {}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值