回忆this,super,static,final

本文详细解析Java中的三个关键概念:this、super与static,通过实例阐述它们的作用与内存解析。

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

传说中的狗熊掰棒子,前面掰了后面丢。每天ctrl c,ctrl v的习惯了,有些东西就真的忘干净了。在脑子里使劲儿的回忆一下,一点点的汇总出来,是个不错的过程。

先来说this ,姑且可以把this看成一个变量,它的值,就是当前对象的引用,所以通常我们在方法中使用this关键字来代表使用当前方法的对象的引用。从内存的角度分析,当前类创建一个当前类的对象,就是在堆内存中分配了一块空间,使用this,就是画了一根指向自己这块空间的箭头。

class User{
	private String userName;
	public User(String str){
		this.userName = str;
	}
}

再来说super,涉及到继承的概念,和this有着异曲同工之处,但是它可不是当前对象的引用,而是可以理解为当前对象的基类(父类)的引用,通常用来引用基类的成分(属性,方法)。从内存的角度解析,子类继承父类,当创建一个子类对象的过程中,就是在堆内存中分配了一块空间,且其中包含了一小块空间,便是父类的对象,理所当然父类的成分在这块儿内存中。使用super,就是画了一根指向父类这块空间的箭头。


class Father_1{
	public void walk(){
		System.out.println("this is Fahter's walk();");
	}
}
class Son_1 extends Father_1{
	public void run(){
		super.walk();
		System.out.println("the son's run();");
	}
}


还要说static,静态!看见它立刻就想到了内存中的数据区域(data segment),简而言之,被修饰为static的变量,方法都只会被存放在内存中的数据区域内,且只存放1份!这就意味着,不管我们new多少对象出来,分配了多少堆内存,调用了static方法或者static变量多少次,data segment里面永远都只会有那一份存在。对于静态变量,谁给它赋值了,它就会变成什么值。对于静态方法而言,不需要new 任何对象也可以直接调用,但是也因为无需对象调用,所以在静态方法中也就不允许使用非静态变量。


最后说final,这个词翻译成中文意思是“最终”,事实上java编译器也是这么理解它。final,最终的,所以不可以再改变。所以,定义为final的变量的值不可以改变,定义为final的方法不能被重写,定义为final的类不能被继承。记住它的含义,也就理解了这些硬性要求的存在。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值