99网
您的当前位置:首页多态中成员变量、成员方法、静态方法访问的特点 、多态中向上转型和向下转型

多态中成员变量、成员方法、静态方法访问的特点 、多态中向上转型和向下转型

来源:99网

多态中成员变量、成员方法、静态方法访问的特点

特点

  • 成员变量:编译看左边(父类),运行看左边(父类)

  • 成员方法:编译看左边(父类),运行看右边(子类) (动态绑定)

  • 静态方法:编译看左边(父类),运行看左边(父类)(静态和类相同,算不上重写,所以访问还是左边的)

  • 总结:只有非静态的成员方法才会编译看左边,运行看右边。

代码

public class Demo2_polymorphic {
    public static void main(String[] args) {
        Father f = new Son2 ( );        //父类引用指向子类
        System.out.println (f.num);
        f.print ( );
        f.Method ( );
        System.out.println ("-----------------");
        Son2 son = new Son2 ( );
        System.out.println (son.num);	//自己有就不用父类的,数据类型是son自己有就输出20
        son.print ( );
        son.Method ( );
    }
}
/*成员变量:编译看左边(父类),运行看左边(父类)
 成员方法:编译看左边(父类),运行看右边(子类)   动态绑定
 静态方法:编译看左边(父类),运行看左边(父类)(静态和类相同,算不上重写,所以访问还是左边的)
总结:只有非静态的成员方法才会编译看左边,运行看右边*/

class Father {                      //父类
    int num = 10;                   //成员变量

    public void print() {            //成员方法
        System.out.println ("father");
    }

    public static void Method() {    //静态方法
        System.out.println ("father static method");
    }
}

class Son2 extends Father {         //子类
    int num = 20;                   //成员变量

    public void print() {            //成员方法
        System.out.println ("zilei");
    }

    public static void Method() {    //静态方法
        System.out.println ("son static method");
    }
}


结果
10
zilei
father static method
-----------------
20
zilei
son static method

内存图方便理解:

成员变量

因篇幅问题不能全部显示,请点此查看更多更全内容