Java this super static final 关键字

本文详细介绍了Java编程中四个关键关键字的使用:this用于引用当前对象,常用于构造方法和解决成员变量与局部变量冲突;super用于访问父类的成员,包括构造方法、变量和方法;static关键字则与类相关联,用于创建静态成员,包括静态变量、方法和内部类;最后,final关键字用于声明不可变的变量和类,防止被修改或继承。通过这些关键字,开发者能更好地理解和控制代码的行为。

目录

this关键字

访问构造方法

访问变量

访问方法

super关键字

访问构造方法

访问变量或对象

访问方法

static关键字

静态成员

访问成员

静态语句块

静态内部类

final关键字 


this关键字

this指代本类的对象也是一个指向本对象的指针,所以不可以在静态环境之中

访问构造方法

必须写在构造方法的第一行,所以一个构造方法不能写两个

this(参数1,参数2,......,参数n);

访问变量

this.成员变量

public Test{
    String name;
    public Test(String name){
        this.name = name;
    }
}

 比如当局部变量与成员变量重名时就可以定位到成员变量,注意参数这个时候也是也是这个作用域中的,所以如果不用this就单纯的是将传入的参数重新赋值了而已,但加了this就是指代的当前对象的成员,所有成员变量就会被赋值为传入的参数值

访问方法

在内部类里面可以使用类名.this来定位,如果直接this那么这个时候指代的就是内部类

this.方法名();

public class Test{
	private String id;
    
    public Test(){    //this关键字调用构造方法必须得是在构造方法的第一行
        this("007");
    }
    public Test(String id){
        this.id = id;
    }
    public void getThisMethodAndPrint(){
        println(this.getId())
    }    

	public String getId() {
		return id;
	}

	public void setId(String id) {    //方法参数
		this.id = id;                 //如果不加this 那么就是对参数的值进行一次修改
	}
	public Test5 getTest() {
		return this;                    //返回当前类的实例
	}
	public static void main(String[] args) {
		println(new Test().getTest());    //@2d554825
		println(new Test().getTest());    //@68837a77
	}
}

super关键字

指父类的对象,也不可以在静态环境中使用。可以访问直接父类的非private成员

访问构造方法

可以调用父类的构造方法来初始化,super必须在子类构造方法的第一行

super(参数1,参数2,......,参数n);

访问变量或对象

super.变量;

访问方法

子类重写了父类的方法后就可以使用来调用父类的方法

super.方法名();

static关键字

static -> 静态的

静态成员不依附于对象存在

静态属性

可以理解为是属于这个类,而不属于这个类的对象,当定义一个静态属性的时候会在内存中开辟一个共享区域,所以在内存中也只存在一份,静态变量供类的所有对象使用

静态成员

定义静态内部类、静态属性、静态方法就只需要在前面加 static 

静态方法在类加载时就在存在了,所以它必须得有实现,也就是说它不能是abstract方法,静态方法中只能访问所属类得静态字段和静态方法,所以this 和super是不能存在于静态方法中的

package org.example.demo;

public class StaticTest {
    static String name = "static";
    static void staticMethod(){
        System.out.println("This is a static method");
    }
    private static class StaticInnerClass{
        static String name = "innerclass";
    }
}

访问成员

类名.成员

 上面代码在其他类中访问代码就是

StaticTest.name;
StaticTest.staticMethod();
StaticTest.StaticInnerClass.name;

静态语句块

会在类初始化时运行一次

static{

}

静态内部类

如果没有static关键字的话,就要使用外部的类的对象来访问内部类。但静态内部类则不需要这么麻烦

StaticTest s = new StaticTest();
StaticTest.InnerClass innerClass = s.new InnerClass();

 静态内部类访问

StaticTest.StaticInnerClass.name;

final关键字 

用来声明数据不可改变

  1. 修饰基本类型使值不变
  2. 修饰引用类型使引用不变
package org.example.demo;

public class FinalTest {
    int a = 1;
    final int b = 5;
    final FinalTest f = new FinalTest();
}

 这个时候如果修改b的值是会报错的

而 f 就不能再引用另一个对象了,如果再写一行 f = new FinalTest();的话也会报错,但可以修改对象的属性

如果修饰类那么这个类就不允许被继承

如果修饰方法那么这个方法就不能被子类重写,这里注意前面说的继承只能访问基类的非private成员,所以如果子类写了一个和父类被private修饰一样的方法名那么就不是重写

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值