2020-08-17

1、this和super的总结;
当super.后面跟方法的时候,它是在调用父类中的该方法(重写前);
this.后面跟方法的时候,它是在调用子类中的该方法(重写后)。
如果一个方法子类并没有重写,那么this.和super.的效果是一样的;
当super.后面跟属性的时候,它是在调用父类当中定义的属性;
this.后面跟属性的时候,它既可以调用从父类继承过来,也可以调用自己定义;
只有一种情况,它们有区别,那就是父类定义了一个属性,子类又定义了一个
同名属性;这个时候super.看到的是父类中定义的属性,this.看到的是子类
中定义的属性。但这种在子类里定义和父类同名的属性是毫无意义的。因为子类
已经从父类继承了该属性,没有必要自己再重新定义一次。
区别:
在同个上下文里,this和 super都是同个对象的引用,也就是说指向同个地址。区别在于this的类型是子类,而 super的类型是父类。在访问父类非 private l成员的时候,获取到的值都是一样的,因为访问的都是内存里的同个位置。而当在访问父类非 private的方法(被子类覆盖法)的时候,this会访问子类的方法,而 super会访问父类的方法
2、static的总结
static关键字
凡事用static修饰的两大特性:
1、与类相关,与对象无关;
2、一定在加载期有特殊动作。

属性:
全类共享唯一值;没有存放在对象身上;
在加载期即声明变量产生在数据段的静态区当中;

类名.属性名;— 对象名.属性名

构造:
不能使用static,因为构造与对象的产生息息相关。

行为:
静态方法不能调用非静态的属性或行为,甚至静态方法里面
不能写this或super;
静态方法在加载期会先于非静态方法优先加载;
如果属性没有static修饰,那么我们称之为“对象属性”
如果属性有static修饰,那么我们称之为“静态属性”或者“类属性”
static修饰的属性在内存上没有存放在每个对象身上,所以不是一个对象一个属性 全类只共享一个
存放在数据段的静态区当中,而且只有一个

static修饰符的属性由于与对象无关,所以可以直接使用类名访问,不用产生对象。
static修饰的属性是在加载期的时候生产,并完成初始化

1.只有全类不管多少个对象共享唯一值的属性,我们才能定义成static修饰的
2.常量属性看见直接定义为static
由于常量值是不可更改的 每个对象的这个值都是一样的,没有必要在每个对象上储存一份,设计一个
static,全类共享即可
3.static修饰的属性可以直接使用类名加。访问也可以对象加。访问,非static修饰的属性只能对象加。

静态方法不能调用非静态的属性行为,甚至静态方法里面不能写this或者super
静态方法在加载期会先于非静态方法优先加载

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值