欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

多态 上转型 下转型

程序员文章站 2023-12-25 22:29:15
...

为什么使用多态

public class Master{
	public void feed(Dog dog){
		dog.eat();
	}
	public void feed(Penguin pgn){
		pgn.eat();
	}
	public void feed(XXX xxx){
		xxx.eat();
	}
}

这些动物类都继承Pet 的子类
用一个feed(Pet pet)去实现对所有动物的喂食

public class Master{
	public void feed(Pet pet)
}

多态代码优化

如何实现多态

思路

  1. 编写父类
  2. 编写子类 ,子类重写父类的方法
  3. 运行时 使用父类的类型 子类的对象

Pet pet = new Dog(); //使用上转型

实现多态的形式

  1. 使用父类作为方法形参实现多态
  2. 使用父类作为方法返回值实现多态

方法形参:

public class Master{
	public void feed(Pet pet){
		pet.eat();//父类方法
	}
}

测试类

  Pet pet = new Dog();
  Mater master = new Master;
  master.feed(pet);

上转型

public class Dog extends Ret{
	public void catch(){
			....
	}
}
public class  Master{
	public void play(Pet pet){
		pet.catch();//报错 上转型的pet不能调用子类的特有方法。
	}
}

下转型

  public class Master{
	public void play(Pet pet){//如果传入的是狗狗 
		if(pet instanceof Dog){
			Dog dog = (Dog)pet
			dog.catch();
		} 
	}
}
 instanceof  用法  是判断是否是继承关系    
 pet instanceof Dog 判断pet 的类型是否为Dog的父类

上一篇:

下一篇: