子类能否重写父类的静态方法

今天突然讨论到了子类继承父类的静态方法问题,有人坚持说能写,有人说不能重写,那到底能不能冲写呢?这个问题很简单,测试一下就完了。

先是父类代码:

[java] view plain copy

print?

  1. public class Fu {
  2. public static void show() {
  3. System.out.println("父类的静态方法");
  4. }
  5. public void method() {
  6. System.out.println("父类的一般方法");
  7. }
  8. }

下面是子类代码:

[java] view plain copy

print?

  1. public class Zi extends Fu {
  2. public static void main(String[] args) {
  3. Fu fu = new Zi();
  4. fu.show();
  5. fu.method();
  6. }
  7. public static void show() {
  8. System.out.println("子类的静态");
  9. }
  10. public void method() {
  11. System.out.println("子类的一般方法");
  12. }
  13. }

输出结果是:

父类的静态方法
      子类的一般方法

结合在网上查到的知识,结论如下:

      父类的静态方法可以被子类继承,但是不能重写。该谁谁的,这属于静态绑定中的一种。

时间: 2024-11-01 07:55:43

子类能否重写父类的静态方法的相关文章

php 子类如何访问父类的静态方法

1.子类内部访问父类静态成员属性或方法,使用 parent::method()/self::method() 注意:$this->staticProperty(父类的静态属性不可以通过$this(子类实例)来访问,会有这样报错:PHP Strict Standards: Accessing static property Person::$country as non static in,PHP Notice: Undefined property: ) 2.子类外部 1.子类名::method

让子类必须重写父类的方法

//在编写子类的时候要重载父类的方法,如果子类不重写方法,则跑出异常让程序崩溃 - (void)superClassMethod { [NSException raise:NSInternalInconsistencyException format:@"It's an exception", NSStringFromSelector(_cmd)]; }

JavaSE8基础 多态 子类没有重写 父类引用调用父类中的方法

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: class Father { public int num = 1; public void sayHello() { System.out.println("hello"); } public static void staticFun() { System.out.println("s

子类重写父类的方法应注意的问题

若想实现一个合格重写方法,而不是重载,那么必须同时满足下面的要求! 重写规则之一:重写方法不能比被重写方法限制有更严格的访问级别. (但是可以更广泛,比如父类方法是包访问权限,子类的重写方法是public访问权限.) 比如:Object类有个toString()方法,开始重写这个方法的时候我们总容易忘记public修饰符,编译器当然不会放过任何教训我们 的机会.出错的原因就是:没有加任何访问修饰符的方法具有包访问权限,包访问权限比public当然要严格了,所以编译器会报错的. 重写规则之二: 参

继承(父类为虚方法以及子类的重写)

定义父类为虚方法时需要关键字  virtual 子类重写需要关键字  override 示例代码: //父类   public class People    {        //虚方法        //VR Virtual Reality  虚拟现实        //AR Augmented Reality 增强现实        public virtual void SayHello()        {            Console.WriteLine("父类打招呼的方法&

加深Java重写父类方法的理解

1.关于子类方法重写父类方法遵循“两同两小一大”的规则 两同:(1)方法名 (2)形参列表 两小:(1)子类返回值类型比父类更小或相等 (2)子类声明抛出的异常应比父类小或者相等 一大:(1)子类权限比父类大或相等 上述的规则都很容易理解: 需要注意的是:如何理解子类返回类型比父类更小或相等. 相信很多新手跟我一样,会理解成int范围比long范围小,那么是否可以重写父类方法时,把原来的父类方法返回值long改为int呢? 答案是:不可以. 原因:返回值类型比父类的要小,返回值类型一定是有父子关

java中父类的静态方法不能被重写

Java中父类的静态方法确实不能被重写的,但是有的人可能去做实验发现在子类中去重写父类static方法时,并没什么问题.这里我来具体解释下. public class Parent { public static void add(){   System.out.println("=========Parent");}} public class Children extends Parent { public static void add(){   System.out.print

关于继承时子类重写父类方法和覆盖父类变量的若干问题

假设,子类重载父类的方法,并将子类的成员覆盖. 创建子类对象实例,将其上转型成父类. 例子1 public class Parent { public void init() { System.out.println("1 init parent"); this.demo(); } public void demo() { System.out.println("2 demo parent"); } } public class Son extends Parent

java 中继承时子类——重写父类方法

1. 普通类继承,并非一定要重写父类方法.2. 抽象类继承,如果子类也是一个抽象类,并不要求一定重写父类方法.如果子类不是抽象类,则要求子类一定要实现父类中的抽象方法.3. 接口类继承.如果是一个子接口,可以扩展父接口的方法:如果是一个子抽象类,可以部分或全部实现父接口的方法:如果子类不是抽象类,则要求子类一定要实现父接口中定义的所有方法. 接口中的方法默认的是public abstract 1 package com.hh.Object; 2 3 public class Interface