java中多态访问成员的特点

先创建一个父类和子类

class Fu10 {
    int a = 10;
    public void fun1() {
        System.out.println("好好学习,天天向上!");
    }

    public static void show1() {
        System.out.println("这是父类中的静态方法show1");
    }

}

class Zi10 extends Fu10 {
    int a = 20;
    @Override
    public void fun1() {
        System.out.println("在学校好好学习!");
    }

    //    public void fun1() {
//        System.out.println("在学校里好好学习!");
//    }
    public static void show1() {
        System.out.println("这是子类中的静态方法show1");
    }
}

1.成员变量:编译看左,运行看左。

public class DuoTaiDemo2 {
    public static void main(String[] args) {
        Fu10 f = new Zi10();
        System.out.println(f.a);

编译过程为先看Fu10中有没有该变量,没有就报错,有就回到Fu10中去调用该变量,结果输出为a=10
2.成员方法:编译看左,运行看右。

public class DuoTaiDemo2 {
    public static void main(String[] args) {
        Fu10 f = new Zi10();
        f.fun1();

编译过程为先看Fu10中有没有该方法,如果没有就报错,如果有就回到Zi10中去运行,如果没有该方法就报错,有就直接运行,结果输出为:在学校里好好学习!
3.静态方法:编译看左,运行也看左

public class DuoTaiDemo2 {
    public static void main(String[] args) {
        Fu10 f = new Zi10();
        f.show1();
    }
}

编译过程先看Fu10中有没有该方法,如果有就直接调用Fu10中的该方法并进行运行,运行结果为:这是父类中的静态方法show1

posted @ 2024-09-25 11:17  你的镁偷走了我的锌  阅读(12)  评论(0)    收藏  举报