父类:
1 package com.company; 2 3 public class A { 4 public int h=2; 5 public void ok(){ 6 System.out.println("i am father!"); 7 } 8 }
子类:
1 package com.company; 2 3 public class B extends A{ 4 public int h=8; 5 public void ok(){ 6 System.out.println("i am child !"); 7 } 8 }
调用类(使用多态):
1 package com.company; 2 3 public class C { 4 public static void main(String ...args){ 5 A a=new B(); 6 System.out.println(a.h); 7 a.ok(); 8 } 9 }
输出:
调用类(不使用多态)
1 package com.company; 2 3 public class C { 4 public static void main(String ...args){ 5 A a=new B(); 6 System.out.println(a.h); 7 a.ok(); 8 B b=new B(); 9 System.out.println(b.h); 10 b.ok(); 11 } 12 }
输出结果:
结论:
多态的体现在:接口、普通类、抽象类。
语法形式:父类 (接口、抽象类) 变量 =new 子类(实现类)();
成员特点:
1、在使用多态的时候,调用的变量值是父类的变量值,如果有编译成功,没有失败。不会看子类的变量。
2、在使用多态的时候,如果调用方法的时候,查看子类和父类,父类有,看子类是否重写,如果重写的话,调用子类的重写方法,如果父类没有该方法,子类即使有该方法也编译失败。