黑马程序员_类型信息

---------------------------------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!-----------------------------------------

       运行时类型信息可以在程序运行时发现和使用类型信息,由于面向类型的操作只能在编译器得到执行。在运行时识别对象和类的信息主要有两种方式:一种是传统的RTTI,它假定我们在编译时已经知道了所有的类型;另一种是反射机制,它允许我们在运行时发现和使用类的信息。

       在面向接口编程的思想下,我们尽量让代码只操纵基类,比如在创建一个基类Shape,从该类可以派生出斗个具体类,如Circle、Square、Triangle。

abstract class Shape

{

     void draw()

      {

             System.out.println(this+".draw()");

              abstract public String toString();

       }

class Circle extends Shape

{

       public String toString()

        {

             return "Circle";

         }

}

Public Squre extends Shape

{

      public String toString()

        {

             return "Squre";

         }

}

Public Triangle extends Shape

{

      public String toString()

        {

             return "Triangle";

         }

}

public class Shapes

{

      public static void main(String[] args)

      {

             list<Shape> shapeList =Arrays.asList(new Circle(),new Square(),new Triangle());

             for(Shape shape:shapeList)  shape.draw();

      }

}

基类中包含draw()方法,通过this参数给System.out.println(),间接地使用toString()方法打印类标识符。在此例子中使用了泛型,Shape对象放入容器中会自动向上转型,可是在向上转型的时候也会丢失具体类型。当从数组中取出元素时,容器会把所有的事物都当作Object持有,也会自动将结果转型回Shape。在java中,所有类型转化多是在运行时进行正确性检查。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值