多态

本文详细介绍了Java中的多态特性,包括多态的概念、类型转换规则以及如何在实际编程中应用多态。通过示例代码展示了多态在继承和方法重写中的运用,并通过一个主人类和不同类型动物的交互场景,生动地演示了多态的实际应用场景。
package laohan;
//功能:
//多态
//概念:
//   所为多态,就是指一个引用(类型)在不同情况下的多种状态,
//你也可以这样理解;多态是指通过指向父类的指针,来调用在不同子类
//中实现的方法

//多态-注意事项
//在讲解多态时,我们注意到一个现象-类型的转换
//1.java允许父类的引用变量引用他的子类的实例(对象)
//Animal animal=new Cat();
//这种转换时自动转换完成的。
//2.关于类型的转换还有一些具体的细节要求,后面还需提。
//比如子类能不能转换成父类,有什么要求等等
public class Demo4 {

public static void main(String[] args) {
// TODO Auto-generated method stub
//Animal.cry();
Cat cat=new Cat();
cat.cry();
Dog dog=new Dog();
dog.cry();
Animal an=new Cat();//(动物的引用指向Cat的实例)
an.cry();
an=new Dog();
an.cry();
bir bir1=new bir();
bir1.cry();
Master master=new Master();
master.feed(new Dog(),new Bone());
master.feed(new Cat(), new Fish());

}

}

//主人类
class Master
{
//给动物喂食物,使用动态,方法就可以用一个
public void feed(Animal an,Food f)//父类的引用变量Animal an
{
an.eat();
f.showName();
}
}

//食物类
class Food
{
String name;
public void showName()
{
}
}

//鱼类
class Fish extends Food
{
public void showName()
{
System.out.println("鱼");
}
}

//骨头类
class Bone extends Food
{
public void showName()
{
System.out.println("骨头");
}
}

//动物类Aniaml
class Animal
{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
private int age;

//动物会叫
public void cry()
{
System.out.println("不知道怎么叫");
}
//动物吃东西
public void eat()
{
System.out.print("不吃什么!");
}
}

//狗类
class Dog extends Animal
{
//狗叫
public void cry()
{
System.out.println("汪汪叫!");
}
public void eat()
{
System.out.print("狗吃骨头!");
}
}

//猫类
class Cat extends Animal
{
//猫叫
public void cry()
{
System.out.println("猫猫叫!");
}
public void eat()
{
System.out.print("猫吃鱼!");
}
}

class bir extends Animal
{
//猫叫
//public void cry()
//{
// System.out.println("猫猫叫!");
//}
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值