很详细的多态

本文通过具体的Java代码示例,介绍了多态的概念及其在实际编程中的应用。通过Cat、Dog、Person等类的设计,展示了如何利用继承和多态提高代码的可扩展性和灵活性。

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

创建一个 Cat 类 Dog 类 Person类 Animal类 在测试
//猫是一种动物 -->继承关系
//可以吧猫当成动物来看
public class Cat extends Animal{
public void eat() {
System.out.println(“猫吃鱼”);
}

public void catchMouse() {
System.out.println(“猫喜欢抓老鼠”);
}

}

public class Dog extends Animal{
public void eat() {
System.out.println(“狗吃骨头”);
}
}

public class Person {

//注释部分为没有把Cat类  	Dog类在Person下继承的效果

// public void feeCat(Cat c) {
// c.eat();
// }
// public void feeDog(Dog s) {
// s.eat();
// }

public void fees(Animal ani) {//接受到的所以有动物都是动物(Animal)
	ani.eat();
}

}

//动物类
public class Animal {
public void eat() {
System.out.println(“动物再吃”);

 }

}

public class Testa {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	
	//以下注释部分为没有把Cat类  	Dog类在Person下继承的效果

// Cat c = new Cat();
// Dog s = new Dog();
// Person p = new Person();
// p.feeCat©;
// p.feeDog(s);

	//Cat c = new Cat();//创建一只猫
	//向上转型   只把猫看成了动物没说动物会抓老鼠    缺点会屏蔽子类中特有的方法
	Animal ani = new Cat();//父类  可以吧猫当成动物来看  ,  把子类对象赋值给父类引用(变量)  向上转型
	Animal ani2  = new Dog();
	
	
	//ani.catchMouse();//会报错   因为站在动物的角度不能抓老鼠     这里在最后进行测试
	
	//多态 把不同数据类型进行统一
	//第一次进行测试测试的向上转型    然后注释运行下面的

// Person p = new Person();
// p.fees(ani);
// p.fees(ani2);

	//向下转型
	Cat cc = (Cat)ani;
	cc.catchMouse();//猫可以抓老鼠了
}

}

小结## 标题
每加一个猫 狗 大象 Person 都要在Person 中添加一个人方法
把他们都看成动物
猫 狗 都不是同一个物种
多态
同一个对象拥有多种形态 让程序有超强的可扩展性
作用
把不同的数据类型进行统一

小知识点
1 把子类的对象赋值给父类 的变量 ——>向上转型
缺点 会屏蔽掉子类中特有的方法
2 把父类的变量转化为子类的变量——>向下转型
把猫看成动物必然的 把动物再看成为猫不一定所以:
向下转型会有风险 java要求必须写强制类型转换
(转换之后的数据类型)变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值