一、多态:同一种引用类型,使用不同的实例而执行不同的操作。
二、使用多态实现的思路:
1编写父类
2编写子类,子类重写父类的方法。
3运行时,使用父类的类型,子类的对象。
注:向上转型(子类转换成父类)
Pet pet=new Dog();
向下转型,(强制转换)(父类转换成子类)
Dog dog=(Dog)pet
强制转换一般结合intanceof 结合使用,语法:对象 intanceof 类或接口。用来判断前面的是否属于后面的类型。一般用于子类所特有的方法时候,在测试类中需要调用这个子类特有的方法时候,需要强制转换。
三实现多态的两种形式
1使用父类作为方法形参实现多态。
2使用父类作为方法返回值实现多态。
四实现多态的好处
多态可以减少类中的代码量,可以提高代码的可扩展性和可维护性
一父类
public class Person {
public void show(){
System.out.println("******我是人类*******");
}
}
二子类男孩
public class Boys extends Person{
public void show(){
System.out.println("我是男孩");
}
public void play(){
System.out.println("我们很爱打游戏");
}
}
子类女孩
public class Girls extends Person {
public void show(){
System.out.println("我是女孩");
}
public void play(){
System.out.println("我们很爱逛街");
}
}
管理类:public class Manager {
public void showinformation(Person p){
if(p instanceof Boys){
Boys people=(Boys)p;
people.play();
}else if(p instanceof Girls){
Girls people =(Girls)p;
people.play();
}
}
注:父类作为方法的参数实现多态
public Person getInformation(int num){
Person p1=null;
if(num==1){
p1=new Boys();
p1.show();
}else if(num==2){
p1=new Girls();
p1.show();
}
return p1;
}
注:父类作为方法的返回值实现多态
public Person getInformation(int num){
Person p1=null;
if(num==1){
p1=new Boys();
p1.show();
}else if(num==2){
p1=new Girls();
p1.show();
}
return p1;
}
测试类
public static void main(String[]args){
Manager you=new Manager();
Person p=new Girls();
you.showinformation( p);
Person ty =you.getInformation(1);
}