一、多态性的体现
1.多态性的体现:
方法的重载和重写
对象的多态性
2.对象的多态性:
向上转型:程序自动完成
父类 父类对象 = 子类示例
向下转型:强制类型转换
子类 子类对象 = (子类)父类示例
代码示例:
class A {
public void tell1() {
System.out.println("A--tell1");
}
public void tell2() {
System.out.println("A--tell2");
}
}
class B extends A {
public void tell1() {
System.out.println("B--tell1");
}
public void tell3() {
System.out.println("B--tell3");
}
}
public class PolDemo01 {
public static void main(String[] args) {
// 向上转型
// B b = new B();
// A a = b;
// a.tell1();//tell1方法是重写的,此时调用的是子类重写的方法
// a.tell2();
// 向下转型(先发生向上转型,才能发生向下转型)
A a = new B();// 向上
B b = (B) a;
b.tell1();
b.tell2();
b.tell3();
}
}
结果:
3.多态性的应用示例:
class A1 {
public void tell1() {
System.out.println("A--tell1");
}
}
class B1 extends A1 {
public void tell2() {
System.out.println("B--tell2");
}
}
class C1 extends A1 {
public void tell3() {
System.out.println("C--tell3");
}
}
class D1 extends A1 {
}
public class PolDemo02 {
public static void main(String[] args) {
say(new B1());
say(new C1());
say(new D1());
}
public static void say(A1 a) {
a.tell1();
}
}
运行结果: