面向对象的三大特征—多态

一、多态:同一种引用类型,使用不同的实例而执行不同的操作。
二、使用多态实现的思路:
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);
       
        
    }

猜你喜欢

转载自www.cnblogs.com/itchenguo/p/10974437.html