结论:java中静态属性和静态要领可以被继续,然则没有被重写(overwrite)而是被隐蔽。
缘由:
1、静态要领和属性是属于类的,挪用的时刻直接经由过程类名.要领名完成,不需要继续机制便可以挪用。
假如子类内里定义了静态要领和属性,那末这时刻父类的静态要领或属性称之为"隐蔽"。假如你想要挪用父类的静态要领和属性,直接经由过程父类名.要领或变量名完成,至于是不是继续一说,子类是有继续静态要领和属性,然则跟实例要领和属性不太一样,存在"隐蔽"的这类状况。
2、多态之所以可以完成依赖于继续、接口和重写、重载(继续和重写最为症结)。有了继续和重写就可以完成父类的援用指向差别子类的对象。
重写的功用是:"重写"后子类的优先级要高于父类的优先级,然则“隐蔽”是没有这个优先级之分的。
示例以下:
package com.study.test; public class A { //父类 public static String staticStr = "A静态属性"; public String nonStaticStr = "A非静态属性"; public static void staticMethod(){ System.out.println("A静态要领"); } public void nonStaticMethod(){ System.out.println("A非静态要领"); } }
package com.study.test; public class B extends A{//子类B public static String staticStr = "B改写后的静态属性"; public String nonStaticStr = "B改写后的非静态属性"; public static void staticMethod(){ System.out.println("B改写后的静态要领"); } }
package com.study.test; public class C extends A{//子类C继续A中的一切属性和要领 }
package com.study.test; public class StaticExtendsTest { public static void main(String[] args) { C c = new C(); System.out.println(c.nonStaticStr); System.out.println(c.staticStr); c.staticMethod();//输出的效果都是父类中的非静态属性、静态属性和静态要领,推出静态属性和静态要领可以 被继续 System.out.println("-------------------------------"); A c1 = new C(); System.out.println(c1.nonStaticStr); System.out.println(c1.staticStr); c1.staticMethod();//效果同上,输出的效果都是父类中的非静态属性、静态属性和静态要领,推出静态属性和 静态要领可以被继续 System.out.println("-------------------------------"); B b = new B(); System.out.println(b.nonStaticStr); System.out.println(b.staticStr); b.staticMethod(); System.out.println("-------------------------------"); A b1 = new B(); System.out.println(b1.nonStaticStr); System.out.println(b1.staticStr); b1.staticMethod();//效果都是父类的静态要领,申明静态要领不可以被重写,不能完成多态 } }
引荐教程:java疾速入门
以上就是java中的静态要领可以被继续么的细致内容,更多请关注ki4网别的相干文章!