java静态变量可以被继承吗,java动态继承和静态继承

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: