java多态机制

通俗的说,一只猫是一个动物;一条狗也是一个动物,这是大自然的多样性。而在java中这种机制被称作多态,也有人把它叫做向上转型。你可能会问有没有向下转型?那么我问你,动物是一只猫,动物是一条狗,这样的表述是否正确?答案自然也就显而易见了。

在java中,一个Animal可以作为一个父类也可以作为一个接口被Cat类、Bird类来继承或实现。

以下用一个小例子来加深你的印象:


abstract class Animal{
public abstract int numOfLegs();
}

class Bird extends Animal{

@Override
public int numOfLegs() {
return 2;
}

}

class Cat extends Animal{

@Override
public int numOfLegs() {
return 4;
}

}

public class TestPolymorphic {

public static void main(String[] args) {
Animal a1=new Bird();
System.out.println("一只"+a1.getClass().getName()+"有"+a1.numOfLegs()+"条腿");
Animal a2=new Cat();
System.out.println("一只"+a2.getClass().getName()+"有"+a2.numOfLegs()+"条腿");
}

}

输出结果:

-------------------------------------------------

一只Bird有2条腿
一只Cat有4条腿

-------------------------------------------------

可能你会说干嘛要这么麻烦,直接Bird b1=new Bird();不就完了嘛。这叫牵扯到设计模式了。

下面来讲讲为什么要用多态?(以下内容为转载)

因为子类是对父类的一个改进和扩充,所以一般子类在功能上较父类更强大,属性较父类更独特, 定义一个父类类型的引用指向一个子类的对象既可以使用子类强大的功能,又可以抽取父类的共性。

若想更深的了解父类引用指向子类对象请点击:http://blog.csdn.net/xuejingfu1/article/details/51497481



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值