多态

本文深入探讨了面向对象编程中的多态概念,包括行为多态和对象多态。通过具体的例子,如不同职业的“人”类和各种“动物”的行为表现,展示了多态如何使同一类型引用指向不同对象时具有不同行为。同时,文章还讲解了向上造型的概念,即父类型的引用指向子类对象,以及如何通过强制类型转换和instanceof操作符来检查和转换对象类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多态

意义:

  • 同一类型的引用指向不同的对象时,有不同的实现
    行为的多态:cut(),run()
abstract class{
	abstract void cut();
}
class 理发师 extends{
   void cut(){ 剪发 }
}
class 外科医生 extends{
   void cut(){ 开刀 }
}
class 演员 extends{
   void cut(){ 停止表演 }
}
abstract class 动物{
  abstract void run()}
class 老虎 extends 动物{
  void run(){地上跑}
}
classextends 动物{
  void run(){天上飞}
}
classextends 动物{
  void run(){水里游}
}
  • 同一对象被造型为不同的类型时,有不同的功能
    对象的多态:我,水
我 me = new();
讲师       p1 = me;
孩子他妈   p2 = me;
老公的老婆 p3 = me;

向上造型:

  • 父类型的引用指向子类的对象
  • 能造型成的类型有:
    父类型、实现的接口
  • 能点出来什么,看引用类型

强制类型转换

成功的条件:

  • 引用所指向的对象,就是该类型
  • 引用所指向的对象,实现了该接口
    建议强转之前通过instanceof来判断引用是否是某种类型
    instanceof返回boolean结果
    强转成功的条件就是它为true的条件
  • eg:
interface Inter1{
	
}
class Aoo{
	
}
class Boo extends Aoo implements Inter1{
	
}
class Coo extends Aoo{
	
}
public static void main(String[] args) {
		Aoo o1 = new Boo();//向上造型
		Boo o2 = (Boo)o1;//引用所指向的对象,就是该类型
		Inter1 o3 = (Inter1)o1;//引用所指向的对象,实现了该接口
		//Coo o4 = (Coo)o1;//ClassCastException类型转换异常
		if(o1 instanceof Coo) {//false
			Coo o5 = (Coo)o1;
		}
		
		System.out.println(o1 instanceof Boo);//true
		System.out.println(o1 instanceof Inter1);//true
		System.out.println(o1 instanceof Coo);//false
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值