static
-
定义
- 静态修饰符,用于修饰成员
-
关系图
-
注意事项
- 被static修饰的成员,储存在方法区(中的静态方法区)中
- 静态的成员在内存中只有一份,[所有的操作指向的都是同一个静态成员]
- 如果多次对同一 个静态成员进行修改,最后的代码中所有涉及到的改静态成员内容都为最后一次修改的内容
- 可以使用对象名调用, 但是不推荐,通常情况下调用时=》类名.方法(…)
- 极大的提升运行效率
- 静态随着类的存在而存在, 随着类的消亡而消亡, jvm不关闭, 静态就一直存在,
- 静态修饰的内容太多容易造成内存溢出
静态与非静态
this关键字的问题
- 静态中,静态修饰的方法里无法使用this关键字
- 静态方法调用的时候(类正在创建中),this(本类的对象)还没有产生
- 非静态中,this关键字可以使用
访问成员变量,方法(静态访问静态)
- 静态方法|变量,可直接访问静态的成员方法|变量, 如果要使用非静态的成员方法|变量,必须先创建对象
方法的重载,重构,重写的区分
- 关系图
- 重载与重写 的区别
重载 | 重写(还可以称为覆盖) |
---|---|
同一个类中出现对个方法名,参数列表不同 | 1、存在继承关系 2、子类与父类成员方法名称相同 3、重新编写=》1>成员方法的实现内容, 2>更改成员方法的存储权限(选), 3>修改成员方法的返回值类型(选) |
- 注:
1.重构在重写的要求的基础上除思想内容不同,其它全部相同
2.重写父类方法时,如要修改权限,
- 只能修饰的权限从小到大(private->default(默认不写时)->protect->public)
3.重写的参数列表必须完全与被重写的方法相同,否则不能称其为重写(而是重载)
重写的注意事项
私有方法
- 父类中私有方法不能被重写
- 父类私有方法子类可以继承,但是受到访问权限的限制,子类没有办法访问。
权限
- 子类重写父类方法时, 访问权限不能更低
- 最好保持一致
静态方法(子类不能重写父类的静态方法)
- 父类的静态方法, 子类也必须通过静态方法重写,但无法改变父类方法
- 重写其实是全遮挡, 但是静态无法做到全遮挡, 我们依然可以直接使用父类中的方法
- 子类可以继承父类的静态方法,但是不可以重写