1、多态性的体现:
方法的重载和重写;
对象的多态性;
2、对象的多态性:
向上转型:程序会自动完成
父类 父类对象 = 子类实例
向下转型:强制类型转换
子类 子类对象 = (子类)父类实例
例子1:
package test;
/**
* @author : suyuyuan
* @date :2016年5月11日 上午10:01:56
* @version 1.0
*/
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 test {
public static void main(String[] args) {
//向上转型
B b = new B();
A a = b;
a.tell1(); //tell1重写的
a.tell2();
}
}
打印输出:
B--tell1
A--tell2
例子2:
package test;
/**
* @author : suyuyuan
* @date :2016年5月11日 上午10:01:56
* @version 1.0
*/
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 test {
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();
}
}
打印输出:
B--tell1
A--tell2
B--tell3