JAVA中关于static的继承问题

//父类

public class Father {
    public static String staticString="父类中的静态变量";
    public  String str="父类中的非静态变量";

    public static  void staticMethod(){
        System.out.println("父类中的静态方法");
    }
    public   void nostaticMethod() {
        System.out.println("父类中的非静态方法");
    }
}


//子类

public class Son extends Father {
    public static String staticString="子类中的静态变量";
    public  String str="子类中的非静态变量";

    public static  void staticMethod(){
        System.out.println("子类中的静态方法");
    }
    public   void nostaticMethod() {
        System.out.println("子类中的非静态方法");
    }
}



//子类


public class A extends Father{

}




//测试方法

public class Test {
    public static void main(String[] args) {
        Son son=new Son();
        System.out.println(son.str);
        System.out.println(son.staticString);
        son.staticMethod();
        son.nostaticMethod();
        System.out.println("==============================");
        Father f=new Son();
        System.out.println(f.str);
        System.out.println(f.staticString);
        f.staticMethod();
        f.nostaticMethod();
        System.out.println("==============================");
        A f2=new A();
        System.out.println(f2.str);
        System.out.println(f2.staticString);
        f2.staticMethod();
        f2.nostaticMethod();
    }
}

结果如下:

78401420170305134232548300978206.png

得出如下结论:父类中的静态成员变量和方法是可以被子类继承的,但是不能被自己重写,无法形成多态.

**    我发现,变量时无法形成多态的,网上别人说,子类把父类的变量继承过来,内存中会存在两个同名的变量,父类的变量会出现在子类变量之前.如下图:**

78401420170305134912751920315340.png

转自 https://www.cnblogs.com/xujingyang/p/6505197.html


标题:JAVA中关于static的继承问题
作者:sharkshen@outlook.com
地址:HTTPS://www.linkjb.com/articles/2020/11/19/1605771926285.html

    评论
    0 评论
avatar

取消