java基础之多态_繁星漫天_新浪博客

在设计一个方法时,通常希望该方法具备一定的通用性。java中,在同一个方法中,由于参数类型不同而导致执行效果各异的现象就是多态。
在java中为了实现多态,允许使用一个 父类类型的变量来 引用一个 子类类型的对象,根据被引用子类对象特征的不同,得到不同的运行结果。
例子:
interface Animal
{
void shout();
}
class Cat implements Animal
{
public void shout(){
System.out.println("喵喵。。。。");
}
}
class Dog implements Animal
{
public void shout(){
System.out.println("汪汪。。。。");
}
}
class  Example
{
public static void main(String[] args) 
{
Animal an1=new Cat();    //将Cat对象当作Animal类型来使用,属于对象的类型转换,不需要任何显式声明
Animal an2=new Dog();   // 此时不能通过父类变量去调用子类中的某些方法,如例2
animalShout(an1);
animalShout(an2);
}
public static void animalShout(Animal an){
an.shout();
}
运行结果:
喵喵。。。。
汪汪。。。。
例2
interface Animal
{
void shout();
}
class Cat implements Animal
{
public void shout(){
System.out.println("喵喵。。。。");
}
public void sleep(){             //Animal里面没有这个方法
System.out.println("喵咪在睡觉。。。。");
}
}

class  Example
{
public static void main(String[] args) 
{
Cat an1=new Cat();
animalShout(an1);
}
public static void animalShout(Animal an){       //an父类变量
an.shout();              //若上一行加一句 Cat an1=(Cat)an;则可以通过编译,但这种方法不推荐使用
an.sleep();            //子类的方法
}
运行结果:
java基础之多态

java中提供一个关键字instanceof,它可以判断一个对象是否为某个类(或接口)的实例或者子类实例,
格式:
对象 instanceof 类或接口
故上面可以用
if(animal instanceof cat)
来判断animal是否是Cat类的实例对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值