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

来源:互联网 发布:软件测试工程师自我介绍 编辑:程序博客网 时间:2024/05/22 00:38

一、多态:同一种引用类型,使用不同的实例而执行不同的操作。

二、使用多态实现的思路:

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);

       

        

    }