this/super/static

this

this. 在一个类中,充当当前对象的表示

  • 可以写在一个类的方法当中,也可以写在构造中,后面跟上“.” 去操作当前对象属性或调用当前对象
  • 的任意行为,不受访问修饰符的控制
  • this() 在一个类中,允许在一个构造方法当中调用本类的另外一个构造方法,从而达到构造方法的共享
  • 1、this()不会产生一个新的对象,只是共享第二个构造体当中的代码
  • 2、添加了this()的构造方法,不能形成循环调用或递归的效果
  • 3、this()会通过实参和形参的匹配,决定调用本类的哪个构造方法
  • 4、this()只能写在构造方法里面且只能是第一句

super:

1、super()——调用父类的指定构造方法

		如果父类有多个构造,可以用super()调用指定构造,匹配方式是实参和形参的匹配。
		如果子类构造不写,则默认是无参的super(),调用父类无参构造

特点:只能写在构造方法当中,且只能写在第一句

2、super. ——后面跟属性或行为

		当super. 后面跟方法时,调用的是父类的该方法

		this. 后面跟方法时,调用的是子类的该方法,若子类没有重写,this. 和  super.  效果一样

		当super. 后面跟属性时,是调用父类中的属性

		this. 后面跟属性,既可以调用继承的父类的,也可以调用自己的,

		(只有父类和子类定义了同一个属性,this. 是子类的属性, super. 是父类的属性)

访问子类中的行为和属性,一般用 this 只有一种用super. 即在子类中调用重写前的父类的实现

static

static修饰的属性是全类共享一个。存放在内存数据段的静态区,而且只有一个

1、只有全类共享唯一值的属性,才能用static修饰
2、常量属性定义为static,因为每个对象的值都是一样的,因此没必要每个都存储
3、static修饰符的属性由于与对象无关,所以可以直接使用类名进行访问,不用产生对象,也可以用对象
4、static修饰的属性是在加载期的时候产生,完成初始化
5、static修饰的方法可以直接使用类名进行访问,不用产生对象
6、通常只把工具类的工具方法设为static
7、构造不能用static,因为构造与对象的产生息息相关

但静态方法不能访问本类的非静态属性和非静态方法,甚至不能写this,super。
非静态方法可以访问本类的静态属性和静态方法——加载期会首先加载一个类的静态方法,然后加载非静态方法

静态导包
这估计就是一个比较生冷的知识点了😏。我们见惯了“import”语句,但是你见过“import static”吗?😤要知道它可是在JDK1.5当中就已经被加入的特性。
一般我们导入一个类都用 import 包名.类名的方式;而静态导入是这样的:import static 包名.类名.;这里的多了个static,还有就是类名后面多了个. ,意思是导入这个类里的静态成员。当然,也可以只导入某个静态方法,只要把 .* 换成静态方法名就行了。然后在这个类中,就可以直接用方法名调用静态方法,而不必用类名.方法名的方式来调用。
比如:
在静态导入之前:

public class TestStatic {
public static void main(String[] args) {
int maxVal = Integer.MAX_VALUE;
String hexStr = Integer.toHexString(38));
}
}
在静态导入之后:

import static java.lang.Integer.*;
public class TestStaticImport {
public static void main(String[] args) {
int maxVal = MAX_VALUE;//直接访问Integer的静态属性
String hexStr = toHexString(38));//直接调用Integer的静态方法
}
}
关于静态导包,我们要多说几句话:

必须使用import static, 不能写成static import;
由于缺少前缀,所以遇到同名方法要小心;
虽然少敲了几下键盘,可能损失的是代码的可读性。
⚠️把它作为一个知识点知道就可以了,至于你用不用这种语法,还是……谨慎吧……😊

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值