zoukankan      html  css  js  c++  java
  • java 子类不能继承父类的static方法

    先来看一段代码

    /**
     * Created by bjchengpeng on  2018/7/19.
     */
    
    /**
    运行结果
    * woof * woofaa * * woof * Basenjiaa * * Basenji * Basenjiaa */ public class Bark { public static void main(String[] args) { Dog woofer = new Dog(); Dog nipper = new Basenji(); Basenji child = new Basenji(); woofer.bark(); woofer.aa(); System.out.println(); nipper.bark(); nipper.aa(); System.out.println(); child.bark(); child.aa(); } } class Dog { public static void bark() { System.out.println("woof"); } public void aa() { System.out.println("woofaa"); } } class Basenji extends Dog { public static void bark() { System.out.println("Basenji"); } public void aa() { System.out.println("Basenjiaa"); } }

    对于static修饰的变量,当子类与父类中存在相同的static变量时,也是根据“静态引用”而不是根据“动态引用”来调用相应的变量的。

    而在父类和子类中对于非static变量和方法,是根据“动态引用”来调用相应的变量和方法。

    然而,接着会有这样的问题存在:java中 子类会不会继承父类的static变量和static方法

    1)先说static方法:子类会不会继承父类的static方法呢??答案是:不会的,但是是可以访问的。

    看如下的代码

    public class Parent {
        public static void  staticMethod(){
            System.out.println("Parent staticMethod run");
    
        }
    
    }
    public class Son extends Parent {
        //...
    }

    测试类

    package com.wrh.teststaticmethod;
    
    public class Test {
    
        public static void main(String[] args) {
            Parent child=new Son();
            child.staticMethod();//输出:Parent staticMethod run   
            Son s=new Son();
            s.staticMethod();//输出:Parent staticMethod run   
    
    
        }
    
    }

    运行结果如下

    Parent staticMethod run 
    Parent staticMethod run

    从上面的运行结果可以看出,static方法是可以被子类访问的。

    2)接着来看父类的static修饰的变量,是否能够被子类继承呢?? 
    答案:也是不可以的。但是也是可以被子类访问的。

    小结

    1)子类是不继承父类的static变量和方法的。因为这是属于类本身的。但是子类是可以访问的。 
    2)子类和父类中同名的static变量和方法都是相互独立的,并不存在任何的重写的关系。

    参考  https://blog.csdn.net/u010412719/article/details/49254017  Java中子类是否可以继承父类的static变量和方法而呈现多态特性

  • 相关阅读:
    ◆◆0[代码]基于动态内表的ALV
    SALV教程19-自定义按钮事件(EVENT)[added_function]
    创建list ALV tree[RS_TREE_LIST_DISPLAY]
    ◆◆0REUSE_ALV_GRID_DISPLAY_LVC-可编辑单元格
    ◆◆0SALV的一些限制和注意事项汇总
    ◆◆0SALV教程20-单元格可编辑
    REUSE_ALV_GRID_DISPLAY_LVC-双击事件’&IC1′
    ◆◆0REUSE_ALV_GRID_DISPLAY_LVC-行选择功能
    [代码]REUSE_ALV_GRID_DISPLAY_LVC-代码模板
    ◆◆0[问题解决]ALV可输入状态下输入金额/数量字段小数位数提前的问题
  • 原文地址:https://www.cnblogs.com/chengpeng15/p/9336761.html
Copyright © 2011-2022 走看看