菜鸟的Java学习日记_this, super 和 static

this和super

通过面向对象的学习认知了this和super,其自然也引出了this. , super. , this() , super()的用法,而其中区别也应注意!

this.和super.

this. 的对象为本类的当前对象,this.的操作对象为本类属性或者本类行为
1.在一个类当中,作为一个隐式的对象存在;充当当前对象的表示,相当于生活中的“我”,比为"我的’’
2.可以写在一个类的方法当中,也可以写在构造中,后面跟上“.”操作符,去操作当前对象的任意属性或调用当前对象的任意行为,不受访问修饰符的限制

super.表示当前对象的父类对象,操作父类属性或者父类行为
1.当super.后面跟方法的时候,它是在调用父类中的该方法(未重写);this.后面跟方法的时候,它是在调用子类中的该方法(已重写),如果一个方法子类并没有重写,那么this.和super.的效果是一样的
2.当super.后面跟属性的时候,他是在调用父类当中定义的属性;this.后面跟属性的时候,它既可以调用本类的属性,同时也可以调用父类继承过来的属性
注意:只有一种情况,它们有区别,那就是父类定义了一个属性,子类又定义了一个同名属性
这个时候super.可以看到父类中定义的属性,this.可以看到子类中定义的属性。但这种在子类里定义和父类同名的属性是毫无意义的。因为子类已经从父类继承了该属性,没有必要自己再重新定义一次

this()和super()

this(参数):调用在本类中另一种形式的构造函数(应该为构造函数中的第一条语句)
1.是在一个类当中,让一个构造方法能够调用本类的其他构造,从而达到构造方法的代码共享
2.只能写在构造方法当中,且只能是第一句
其中要注意:
a.this()不会再产生一个新对象,只是共享第二个构造体当中的代码
b.添加了this()的方法不能形成循环调用或者递归等效果否者
c.this()会通过该实参和形参的匹配,决定调用本类的哪个构造方法
d.只能在本类的构造方法中写this(),而且只能写在第一句

super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)
1.调用父类的指定构造方法
由于产生子类对象之前先要产生父类对象部分,那么就要调用父类构造方法,如果父类有多个构造,那么可以通过super()调用指定的父类构造方法,匹配方式是实参和形参的匹配(顺序 ,个数, 类型一致)
如果子类构造不写,那么默认是无参的super(),即调用父类无参构造。
2.只能写在构造方法中,且只能写在构造方法中

总结:访问子类中的属性和行为,我们通常全部使用this.只有一种情况使用super.,那就是在子类中调用重写方法在父类中的实现
注意:super.能看到的this.一定能看到,super.看不到的this.有可能看得到

static

static :静态修饰符
可用于修饰属性和方法但不可用于修饰构造方法,究其原因则是可被static修饰的内容都有两个共性:
1.只与类有关,而与对象无关

在一个类中的属性被称为对象属性,而当被static修饰时则称为静态属性也形象的称为类属性。因为static修饰的属性在内存上没有存放在每个对象身上,所以不是一个对象一个属性,而是全类共享一个!存放在数据段的静态区当中,而且只有一个。

正因为这些特性,static修饰符的属性由于与对象无关,所以可以直接使用类名进行访问,不用产生对象。static修饰的属性是在加载期的时候产生,并完成初始化。而构造方法不能使用static关键字进行修饰,因为构造方式的作用是产生对象,所以与对象密切相关,因此不符合static的特性。

2.一定会在加载期就有特殊的动作

在加载期,会首先加载一个类的静态方法,然后再加载非静态方法

注意:
1.用static修饰的方法可以直接用"类名."的方式访问,当然也可以用"对象."的方式访问
2.静态方法不能访问本类的非静态属性,当然也不能调用本类的其他非静态方法;非静态方法可以访问本类的静态属性,或调用本类的静态方法
3.通常我们只把工具类的工具方法设计为static的(工具方法:该方法的调用与对象无关,或是不改变执行对象的状态属性)
4.常量属性可直接定义为static,由于常量值是不可更改,每个对象的这个值都是一样的,所以没有必要在每个对象身上存储一份,设计为static,全类共享即可
5.static修饰的属性可以直接使用"类名."的方式访问,当然也可以用"对象."的方式;但是非static修饰的属性,只能用"对象."的方式访问

PS:我只是一个刚学Java的菜鸟 所以感谢大佬指正 感激不尽!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值