zoukankan      html  css  js  c++  java
  • java中static方法的继承性

    首先需要知道的是,java中所有的public实例方法都默认是virtual的,static方法不是virtual的,所以static方法可以被覆盖(new),但不可被重写(override)

    1.被继承

    父类:

    public class Parents{
        public static void staticFunction(){
            System.out.println("public static function of parents");
        }
        public void callPrintName(){
            this.printName();
        }    
    }

    子类:

    1 public class Child extends Parents{
    2     public static void main(String[] args){
    3         Child child=new Child();
    4         child.staticFunction();
    5     }
    6     
    7 }

    输出

    public static function of parents

    说明static方法可以被继承

    2.被覆盖(new)

    父类:

    public class Parents{
        public static void staticFunction(){
            System.out.println("public static function of parents");
        }
        public void callPrintName(){
            this.printName();
        }    
    }

    子类:

    public class Child extends Parents{
        public static void staticFunction(){
            System.out.println("public static function of Child");
        }
        public static void main(String[] args){
            Child child=new Child();
            child.staticFunction();
        }
        
    }

    输出:

    public static function of Child

    上面输出是public static function of Child,说明static已经被覆盖(new)了

    3.不是virtual,即不能实重写(override)

    //父类
    public class Parents{
        private void printName(){
            System.out.println("private function of parents");
        }
        public static void staticFunction(){
            System.out.println("public static function of parents");
        }
        public void callPrintName(){
            this.printName();
        }    
    }
    
    
    
    
    
    //子类
    public class Child extends Parents{
        public static void staticFunction(){
            System.out.println("public static function of Child");
        }
        public static void main(String[] args){
            Parents child=new Child();
            child.staticFunction();
        }
        
    }

    输出:

    public static function of parents

     上面的child是属于Child实例,用Parents引用,输出的是public static function of parents,说明static方法不是virtual的,不能被重写(override)。



  • 相关阅读:
    DRF内置限流组件之自定义限流机制
    DRF内置权限组件之自定义权限管理类
    DRF内置认证组件之自定义认证系统
    java基础(15)--多态
    java基础(13)--静态变量、静态代码块、实例代码块
    java基础(12)--static变量/方法 与 无 static的变量/方法的区别
    java基础(11)--封装
    java基础(10)--空指针异常
    java基础(9)--方法重载
    java基础(8)--键盘输入
  • 原文地址:https://www.cnblogs.com/JMLiu/p/7515795.html
Copyright © 2011-2022 走看看