首页 > 代码库 > 朔型与多态

朔型与多态

1.朔型

  java支持隐式转换,以及显式转换。类型转换也叫做朔型。对象的朔比类型转换复杂多,对象只可以被朔型为:

    1.该对象的任何一个父类类型

    2.对象所属类实现的接口,虽然接口不可以生成对象,但是接口引用可以指向实现了该接口的子对象

    3.或者回到自己所在的类,一个对象被朔型成父类后,还可以被朔型回来

  当一个对象被朔型成父类后,他提供的方法会减少,但是当把该对象朔型回来后,他又可以使用自身的方法。从而对象朔型并没有改变他的类型,而是暂时将它当作一般的类型。

  如果在朔型前和朔型后的类中提供相同的方法,这种情况下,对于实例来说总是沿着原始类开始向上查找,这个机制将回引发多态性。

 

2.多态
  将一条消息发给对象时,可能并不能知道运行对象具体是什么,但采取的行动是正确的,这种情况叫做多态。多态是指不同类型对相同消息作出不同的反映。如下是一个多态例子

import static java.lang.Math.*;

class Shape{
    void draw(){};    
}

class Circle extends Shape{
    
    @Override
    void draw(){
        System.out.println("Drow Circle");
    }
    
}

class Square extends Shape{

    @Override 
    void draw(){
        System.out.println("Drow Square");
    }
}

public class Test{
    public  static void  main(String srgs[]){
        
        Shape shape[] = new Shape[5];
        for (int i=0;i<5;i++){    
            int n = (int)(random()*2);
            if (n == 0){
                shape[i] = new Circle();
            }
            else{
                shape[i]=new Square();
            }
        }
        
        for (int i=0;i<5;i++)
            shape[i].draw();
        
    }
}

 

朔型与多态