您的位置:首页 > 职场人生

黑马程序员Java----多态

2015-04-22 15:46 162 查看
多态:一个父类的引用类型变量它既可以指向父类对象,也可以指向子类子类对象,他可以根据当前时刻指向的不同,自动调用不同的方法。

例如:B是AP的子类,

AP ab = new B();//ab是父类AP引用变量,他存储了新new出来的类B的地址,存储着这个B类的对象的地址。


package cn.itheima.day02;

public class PolyTest {

/**此程序证明了java多态
* 一个父类的引用类型变量它既可以指向父类对象,也可以指向子类子类对象,他可以根据当前时刻指向的不同,自动调用不同的方法,这就是多态
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
AP aa = new AP();
System.out.println(aa.getClass());
B bb = new B();
AP ab = new B();//ab是父类AP引用变量,他存储了新new出来的类B的地址,存储着这个B类的对象的地址。
aa = bb;//将子类的bb地址赋给了父类aa,把bb当做aa来看,aa可以使用bb中的方法,aa保存了bb地址,aa就代表了bb对象
aa.f();//这样aa就可以调用f方法,子类可以当做父类
aa.g();//既可以调用子类方法,也可以调用父类方法
bb = (B) aa;//父类无法转换成子类
bb.f();
System.out.println(aa.getClass());
System.out.println(bb.getClass());
}

}
class AP{
public void f(){
System.out.println("AAAA");
}
public void g(){
System.out.println("CCCC");
}
}
class B extends AP{
public void f(){
System.out.println("BBBB");
}
}
/*运行结果:
class cn.itheima.day02.AP
BBBB
CCCC
BBBB
class cn.itheima.day02.B
class cn.itheima.day02.B
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: