静态类型检查与继承
2014-09-30 20:25
141 查看
类型检查(type checking)是指确认任一表达式的类型并保证各种语句符合类型的限制规则的过程。Java是静态类型检查的语言,但是仍然需要运行期类型检查,并抛出可能的运行时异常。
Wiki:
Static type-checking is the process of verifying the type safety of a program based on analysis of a program's source code.
Dynamic type-checking is the process of verifying the type safety of a program at runtime
A: 返回的对象实际类型Sub,声明类型Sup。编译器只知道me()在Sup中返回Sup,运行时子类继承me()并返回this。
② new Sub().me().inSub(); 为什么编译错误?
A:“子类扩展的丧失”。编译器只知道new Sub().me()为Sup类型,而Sup中没有子类特定的方法。
new Sub().me() 现在只能够调用.inSup()。
((Sub)new Sub().me()).inSub(); //可以向下造型
③假设Sub2 extends Sup,有方法 inSub2。((Sub2)new Sub().me()).inSub2(); 会怎样?
A:编译合法,但是运行时抛出 java.lang.ClassCastException: typeSystem.Sub cannot be cast to typeSystem.Sub2
Wiki:
Static type-checking is the process of verifying the type safety of a program based on analysis of a program's source code.
Dynamic type-checking is the process of verifying the type safety of a program at runtime
package typeSystem; import static tips.Print.*;//pln() class Sup{ Sup me() { return this;} public void inSup() {pln("Sup");} } class Sub extends Sup { public void inSub() {pln("Sub");} }①"new Sub().me()"返回的是什么?
A: 返回的对象实际类型Sub,声明类型Sup。编译器只知道me()在Sup中返回Sup,运行时子类继承me()并返回this。
② new Sub().me().inSub(); 为什么编译错误?
A:“子类扩展的丧失”。编译器只知道new Sub().me()为Sup类型,而Sup中没有子类特定的方法。
new Sub().me() 现在只能够调用.inSup()。
((Sub)new Sub().me()).inSub(); //可以向下造型
③假设Sub2 extends Sup,有方法 inSub2。((Sub2)new Sub().me()).inSub2(); 会怎样?
A:编译合法,但是运行时抛出 java.lang.ClassCastException: typeSystem.Sub cannot be cast to typeSystem.Sub2
相关文章推荐
- 关于继承更关于静态类型和动态类型检查
- 静态类型检查与继承
- C++ 是一门静态类型语言,在编译时会作类型检查
- day33 序列类型,绑定方法,类方法,静态方法,封装继承和多态
- Objective-C 编程语言(9)使能静态行为----类型检查、返回值和参数的类型、将派生类静态地转换为基类类型
- Java中静态类型检查是如何进行的
- Flow: JavaScript静态类型检查工具
- 静态类型和动态类型检查
- 静态类型和动态类型检查
- OC基础-静态类型,动态类型,编译检查,运行检查,父子类指针和对象互指17
- 编译器开发系列--Ocelot语言6.静态类型检查
- 【Groovy 2.0静态类型检查及编译功能介绍】
- 简易Java(04):Java如何进行静态类型检查?
- Java中静态类型检查是如何进行的
- 理解Flow静态类型检查
- flow JavaScript 静态类型检查工具
- Java的静态类型检查示例代码详解
- JavaScript静态类型检查工具FLOW简介
- Java中静态类型检查是如何进行的实例思路详解
- 简单描述java-Groovy 2.0静态类型检查及编译功能介绍