Java教程

java类 static成员变量 以及方法都会被子类继承吗

本文主要是介绍java类 static成员变量 以及方法都会被子类继承吗,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

 

package com.java.sjq.superclassStatic;

/**
 * java类 static成员变量 以及方法都会被子类继承吗?
 * 结论:子类可以访问,无法继承,所以无法多态。
 */
public class P implements Cloneable{
    String name;
    @Override
    public Object clone() throws CloneNotSupportedException {
        P p = null;
        try {
            p = (P)super.clone();
        } catch ( ClassCastException e) {
            e.printStackTrace();
        }
        return p;
    }

    static public  int a=2;
    static void fun(){
        System.out.println("P-static-fun"+ a);
    }
    void gun(){
        System.out.println("p-gun"+a);
    }

    public static void main(String[] args) {
        S.fun(); // s-static-fun2
        fun(); // P-static-fun3
        P p = new P();
        S s = new S();
        p.f2(s);  // P-static-fun3
        p.f3(s);  // s-gun3

    }
    void f2(P p){  // 虽然 p.f2(s) 传入的是示例s,但是还是无法下转型为类S的实例,于是p.fun()调用的还是类P的静态方法fun()
        p.fun();
    }
    void f3(P p){
        p.gun();
    }
}

class S extends P{
    //    static public  int a=2;
    static void fun(){
        System.out.println("s-static-fun"+ a);
        a++; // S 自己定义了a,a++对P的a没影响;若S没有定义a,那么a++就会更改P的a
    }
    void gun(){
        System.out.println("s-gun"+a);
    }
}

 

这篇关于java类 static成员变量 以及方法都会被子类继承吗的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!