以下的代码实现了每个用户 定义的数据类型,我把实现写得很简单。
用这样的类型声明和类的定义,图2从概念的观点描述了Java指令。
Derived2 derived2 = new Derived2();
图2 :Derived2 对象上的引用
上文中声明了 derived2这个对象,它是Derived2类的。图2种的最顶层把Derived2引用描述成一个集合的窗口,虽然其下的Derived2对象是可 见的。这里为每个Derived2类型的操作留了一个孔。Derived2对象的每个操作都去映射适当的代码,按照上面的代码所描述的那样。例 如,Derived2对象映射了在Derived中定义的m1()方法。而且还重载了Base类的m1()方法。一个Derived2的引用变量无权访问 Base类中被重载的m1()方法。但这并不意味着不可以用super.m1()的方法调用去使用这个方法。关系到derived2这个引用的变量,这个 代码是不合适的。Derived2的其他的操作映射同样表明了每种类型操作的代码执行。
既然你有一个Derived2对象,可以用任 何一个Derived2类型的变量去引用它。如图1所示,Derived, Base和IType都是Derived2的基类。所以,Base类的引用是很有用的。图3描述了以下语句的概念观点。
Base base = derived2;
图3:Base类引用附于Derived2对象之上
虽然Base类的引用不用再访问m3()和m4(),但是却不会改变它Derived2对象的任何特征及操作映射。无论是变量derived2还是 base,其调用m1()或m2(String)所执行的代码都是一样的。