面向对象'多态'——JAVA

@月月鸟

封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。

继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。那么什么是多态呢?
多态一词的通常含义是指能够呈现出多种不同的形式或形态。而在程序设计的术语中,它意味着一个人特定类型的变量可以引用不同类型的对象,并且能够自动的调用引用的对象的方法,也就是根据作用到的不同对象类型,响应不同的操作。

方法重写是实现多态的基础。

在这里插入图片描述

多态的实现

实现的条件

Java实现多态有三个必要条件:继承、重写、向上转型。

// Pet 父类
 class Pet {
	 void toHospital() {
		System.out.println("宠物看病");
	}
}

//  Bird 子类
class Bird extends Pet {
	 void toHospital() {
		 System.out.println("小鸟看病");
	 }
	 void run() {
		 System.out.println("会跑");
		 
	 }
}


// Dog 子类
class Dog extends Pet {
	  void toHospital() {
		System.out.println("狗狗看病");

	}
	  void fly() {
		  System.out.println("会飞");
	  }
}


//调用类
class Test {
	public static void main(String[] args) {
		
		Pet pet=new Dog();
		pet.toHospital();
		pet =new Bird();
		pet.toHospital();
		
		if(pet instanceof Dog) {
			Dog dog=(Dog)pet;
			dog.fly();
		}else if(pet instanceof Bird) {
			Bird bird=(Bird)pet;
			bird.run();
		}
	}
}

向上转型:
<父类型><引用变量名>=new<子类型>();
将一个父类的引用指向一个子类对象称为向上转型。系统会自动类型转换。
向下转型:
<子类型><引用变量名>=(<子类型>)<父类型的引用变量>;

instanceof运算符:

使用instanceof时,对象的类型必须和instanceof后面的参数所指定的类有继承欢喜,否则会出现编译错误。

多态的应用:
  • 使用父类作为方法的形参
  • 使用父类作为方法的返回值

以上内容可能会有出入,部分出自转载,欢迎大家踊跃留言指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值