一、多态的三种实现方式(左父右子)

 

第一种:父类是普通类

Fu obj = new Zi();

第二种:父类是抽象类

Father obj = new Child();

第三种:父类是接口

Animal obj = new Dog();

二、多态的执行(编译看左边,运行看右边)

public class Fu {

int num = 5;

static void method1() {

System.out.println("fu_method_1");

}

void method2() {

System.out.println("fu_method_2");

}

}

public class Zi extends Fu {

int num = 10;

static void method1() {

System.out.println("zi_method_1");

}

void method2() {

System.out.println("zi_method_2");

}

}

public class Test {

public static void main(String[] args) {

Fu f = new Zi();

System.out.println(f.num); //与父类一致

f.method1(); //与父类一致

f.method2(); //编译时与父类一致,运行时与子类一致

Zi z = new Zi();

System.out.println(z.num);

z.method1();

z.method2();

}

}

输出结果:

5

fu_method_1

zi_method_2

10

zi_method_1

zi_method_2

总结:成员变量、静态方法看左边(父类);非静态方法:编译看左边(父类),运行看右边(子类)。

经验分享 程序员 微信小程序 职场和发展