java静态变量可以被继承吗,java动态继承和静态继承
结论:java中静态属性和静态方法可以被继承,但是没有被重写(overwrite)而是被隐藏。
原因:
1.静态方法和属性属于类。调用时直接由类名.方法名完成,无需继承机制即可调用。
如果静态方法和属性是在子类中定义的,那么父类的静态方法或属性被称为“隐藏的”。如果你想调用父类的静态方法和属性,直接通过父类名.方法或变量名。至于要不要继承,子类继承了静态的方法和属性,但是不像实例方法和属性,有一个‘隐藏’的情况。
2.多态之所以能实现,取决于继承、接口、重写和重载(继承和重写是最关键的)。通过继承和重写,父类的引用可以指向不同子类的对象。
重写的功能是:"重写"后子类的优先级要高于父类的优先级,但是“隐藏”是没有这个优先级之分的。
例子如下:
包com . study . test;
a类{//父类
公共静态字符串staticStr= A static attribute
Public nonstatic str=“一个非静态属性”;
公共静态void staticMethod(){
System.out.println(“一个静态方法”);
}
public void nonStaticMethod(){
System.out.println(“非静态方法”);
}
}包com . study . test;
公共类B扩展了A{//子类B
公共静态字符串staticStr=B重写的静态属性;
公共字符串非统计字符串= b覆盖了非静态属性;
公共静态void staticMethod(){
System.out.println(B重写后的静态方法);
}
}包com . study . test;
公共类C扩展了A{//子类C继承了A中的所有属性和方法。
}包com . study . test;
公共类StaticExtendsTest {
公共静态void main(String[] args) {
C C=new C();
system . out . println(c . nonstatics tr);
system . out . println(c . static str);
c . static method();//输出结果都是父类中的非静态属性、静态属性、静态方法。推导静态属性和静态方法可以
遗传的
system . out . println(-);
a C1=new C();
system . out . println(C1 . nonstatics tr);
system . out . println(C1 . static str);
C1 . static method();//结果同上。输出结果都是父类中的非静态属性、静态属性和静态方法。静态属性和
静态方法可以被继承。
system . out . println(-);
B B=new B();
system . out . println(b . nonstatics tr);
system . out . println(b . static str);
b . static method();
system . out . println(-);
a B1=new B();
system . out . println(B1 . nonstatics tr);
system . out . println(B1 . static str);
B1 . static method();//结果都是父类的静态方法,也就是说静态方法不能被覆盖,不能多态。
}
}推荐教程:java快速入门。以上是java中静态方法是否可以继承的细节。请多关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。