为什么静态成员、静态方法中不可使用this和super关键字+static关键字+子类是否可以继承父类的static变量和方法而呈现多态特性

1.static 静态的,可用来修饰属性,方法,*代码块,*内部类

static 修饰属性(类变量):是属于类本身的,不是属于某一个对象。当声明一个对象时,并不产生static变量和方法的拷贝

注意:子类会不会继承父类的static方法呢?不会的,但是可以访问。子类并没有继承父类的static修饰的变量和方法,所以说即使子类和父类中都有同样的static方法和变量,并不存在任何的重写的关系,是相互独立属于各自类本身的。因此也不存在多态特性的。而对于普通方法的调用是存在“重写”而最终呈现出多态特性的。

1.由类创造的所有对象,都共用这个属性。

2.当其中一个对象对此属性修改,会导致其他对象对此属性的一个调用 。实例变量(非静态的属性,各个对象各拥有一套副本)

3.静态的变量可以直接通过“类.变量”的形式来调用。

4,类变量的加载要优先于对象,所以当有对象以后,可以“对象.类变量”使用,但是 “类.实例变量”是不行的。

5.类变量存在于静态域中
static 修饰方法(类方法):

1.随着类的加载而加载。在内存中也是独一份。

2.可以直接通过“类.类方法”的方式调用。

3.静态方法在实例化之前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存; 内部静态方法可以调用静态的属性或静态的方法,而不能调用非静态的属性或方法。反之,非静态的方法不可以调用静态的属性和方法。

静态方法可以直接调用,非静态方法的调用,需要通过new对象来调用

4.静态成员+静态的方法内是不可以使用 this 或 super 关键字!

this和super是属于对象范畴的东西,而静态方法是属于类范畴的东西

this代表的是调用这个函数的对象的引用,而静态方法是属于类的,不属于对象,静态方法成功加载后,对象还不一定存在。

this代表对本类对象的引用,指向本类已经创建的对象;而super代表对父类对象的引用,指向父类对象;  静态方法和静态类不属于单个对象,而是类的所有对象共享使用。

注:静态的结构(static的属性,方法,代码块,内部类)的生命周期要早于非静态的结构,同时被回收也要晚于非静态的结构
解析:https://blog.csdn.net/u010479322/article/details/51730275

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值