Java多态的理解

来源:互联网 发布:vb与vs的区别 编辑:程序博客网 时间:2024/04/30 13:41
Java的多态性:
            1、面向对象的三大特性:继承、封装 、多态;继承和封装几乎都是为对台而准备的
            2、多态性:指的是允许不同类的对象对统一消息作出响应,即同一消息可以根据发送对象的不同而有不同的行为方式。
            3、实现多态性的技术:动态绑定(dynamic binding),指在程序运行时根据实际所引用对象的实际类型而调用其响应的方法。

在多态中主要涉及技术:
                1、继承
                2、父类对象引用子类对象(JAVA的向上转型)
                3、重写
                3、Java继承中的重写的优先级(this.a() > super.a())


例子:
class A{
void say(){
System.out.println("say: I am A");
}
void tellA(){
System.out.println("tellA: I am A");
}
}

class B extends A{
void say(){
System.out.println("say: I am B");
}
void tellB(){
System.out.println("tellB: I am B");
}
}

class C extends A{
void say(){
System.out.println("say: I am C");
}
void tellC(){
System.out.println("tellC: I am C");
}
}

public class PolDemo {

public static void main(String[] args) {
// TODO Auto-generated method stub
SayWhoIsU(new A());
SayWhoIsU(new B());
SayWhoIsU(new C());
TellWhoIsU(new A());
TellWhoIsU(new B());
TellWhoIsU(new C());
}
public static void SayWhoIsU(A a)
{
a.say();
}
public static void TellWhoIsU(A a)
{
a.tellA();
}

}
输出:
say: I am A
say: I am B
say: I am C
tellA: I am A
tellA: I am A
tellA: I am A

0 0