package rock.lee.thinkinjava.c14.typeinfo; import java.util.Arrays; import java.util.List; abstract class Shape{ void draw(){ System.out.println(this+".daw()"); } abstract public String toString(); } class Circle extends Shape{ @Override public String toString() { return "Circle"; } } class Square extends Shape{ @Override public String toString() { return "Square"; } } class Triangle extends Shape{ @Override public String toString() { return "Triangle"; } } public class Shapes { public static void main(String[] args) { //如果没有泛型,默认都会是Object List<Shape> shapeList = Arrays.asList(new Circle(),new Square(),new Triangle()); for (Shape shape : shapeList) { shape.draw();//间接调用了toString() Class<? extends Shape> c = shape.getClass(); System.out.println(c.getSuperclass()); System.out.println(c.getSimpleName()); System.out.println(c.getCanonicalName()); System.out.println(c.isInterface()); } } } /** Circle.daw() Square.daw() Triangle.daw() **/
package rock.lee.thinkinjava.c14.typeinfo; import java.util.Random; class Initable1{ //编译期常量 static final int staticFinal1 = 47; //非编译期常量,访问时类要被初始化 static final int staticFinal2 = ClassInitialization.random.nextInt(1000); static{ System.out.println("Initable1"); } } class Initable2{ //访问时类要被初始化,只有访问static final声明的常量才不会初始化 static int staticNonFinal = 147; static{ System.out.println("Initable2"); } } class Initable3{ static int staticNonFinal = 74; static{ System.out.println("Initable3"); } } public class ClassInitialization { static{ System.out.println("ClassInitialization"); } public static Random random = new Random(47); public static void main(String[] args) { //does not trigger Initialization Class initable1Class = Initable1.class; System.out.println("After Creating Initable1 "); //does not trigger Initialization System.out.println(Initable1.staticFinal1); //does trigger Initialization System.out.println(Initable1.staticFinal2); //does trigger Initialization System.out.println(Initable2.staticNonFinal); try { //does trigger Initialization Class initable3Class = Class.forName("rock.lee.thinkinjava.c14.Initable3"); System.out.println("After Creating Initable3 "); } catch (ClassNotFoundException e) { e.printStackTrace(); } System.out.println(Initable3.staticNonFinal); } } /** ClassInitialization After Creating Initable1 47 Initable1 258 Initable2 147 Initable3 After Creating Initable3 74 */
相关推荐
Java编程思想第十四章类型信息之反射与代理.pptx
最后,第十二章“结构”讲解了如何定义和使用自定义数据结构——结构体,这允许将不同类型的变量组合成一个单一的实体,便于处理复杂的数据结构,如链表、树等。 总之,这个C语言课件全面覆盖了C语言的基础知识,...
【UNIX环境高级编程(第十四章)】章节主要讲解了UNIX系统中进程间通信(IPC,InterProcess Communication)的各种机制,这些机制允许不同进程之间高效地交换信息,超越了简单的文件共享和进程创建。以下是对各知识...
在本资源"C#语言和SQL Server数据库基础-第14章上机练习.zip"中,主要探讨了C#编程语言与SQL Server数据库的基础知识及其实际应用。这是一份由原创作者田超凡编写的教程,旨在帮助学习者通过上机实践来加深对这两个...
第一章:C语言程序设计概述 2课时 第二章:基本数据类型与表达式 4课时 第三章:顺序程序设计 4课时 第四章:选择结构程序设计 4课时 第五章:循环结构程序设计 8课时 ...第十一章:文件
第十四章可能涵盖了.NET平台的核心概念、C#语言特性以及如何利用这些知识进行实际开发。下面将详细探讨.NET平台、C#编程语言的关键知识点,并结合可能的源码分析,给出更全面的理解。 1. **.NET平台概述**:.NET是...
【标题】"VC开发经验技巧 共分为21章 第十四章" 提供了关键信息,这是一份关于Visual C++(简称VC)开发的综合教程,共有21个章节,而我们关注的是第14章。在VC开发中,开发者通常会涉及到Windows应用程序设计、MFC...
【标题】"ACCP6.0 S1 C#语言 和 数据库技术基础 第14章(共17章)"涵盖了计算机科学中的两个关键领域,即C#编程语言和数据库技术,这些都是现代软件开发的基础。在这一部分,我们将会深入探讨C#语言的基本语法和特性...
**第十四章:ASP.NET MVC** ASP.NET MVC是一种模型-视图-控制器架构模式,为Web开发提供了更灵活的方式。会讲解MVC架构的原理,以及如何创建和路由控制器、视图和模型。 通过北大青鸟ACCP的这些章节,学生将全面...
第十四章探讨了Java中的反射机制。反射允许程序在运行时获取类的信息并操纵对象的状态。本章讲解了Class对象的使用方法、如何获取类的方法和字段信息、如何动态创建对象以及调用方法等内容。通过反射,可以实现更为...
文章目录第十四章 Caché 定义和使用关系关系概述一对多关系主子关系主子关系和储存共同关系术语定义关系一般语法定义一对多关系定义父子关系父子关系和编辑。示例一对多关系示例主子关系示例连接对象方案1:更新一...
第14章 数据备份与还原 共21页.pptx 第15章 MySQL日志 共22页.pptx 第16章 性能优化 共18页.pptx 第17章 MySQL Workbench5.2 的使用 共15页.pptx 第18章 MySQL Replication 共27页.pptx 第19章 MySQL Cluster 共49页...
描述中并未提供具体信息,但我们可以推测这可能是一个学习资源,提供了解答机械工程课程中第14章习题的答案,帮助学生理解和掌握相关知识。 标签“资料”暗示这是一个学习资料或参考资料,可能包含详细的解释和计算...
第十三章“复制控制”讲解了构造函数、析构函数、拷贝构造函数和赋值运算符,以及深拷贝和浅拷贝的概念。习题解答会涵盖自定义拷贝控制以避免常见的资源管理问题。 这份完整的习题解答不仅有助于巩固C++的基础知识...
由于上传文件大小限制该资源为上下篇 本资源为下篇 ...第14章 类型信息 第15章 泛型 第16章 数组 第17章 容器深入研究 第18章 Java I/O系统 第19章 枚举类型 第20章 注解 第21章 并发 第22章 图形化用户界面
5.8 数组初始化 5.8.1 可变参数列表 5.9 枚举类型 5.10 总结 第6章 访问权限控制 第7章 复用类 第8章 多态 第9章 接口 第10章 内部类 第11章 持有对象 第12章 通过异常处理错误 第13章 字符串 第14章 类型信息 第15...
第14章 数据备份与还原 共21页.pptx 第15章 MySQL日志 共22页.pptx 第16章 性能优化 共18页.pptx 第17章 MySQL Workbench5.2 的使用 共15页.pptx 第18章 MySQL Replication 共27页.pptx 第19章 MySQL Cluster 共49页...
13. **第十四章:图形用户界面** - 使用Swing库创建GUI,包括组件、布局管理器、事件处理等。 15. **第十五章:网络编程** - Java提供了Socket和ServerSocket类进行网络通信,以及URL和URLConnection类用于访问网络...
《财务管理14第十四章预算管理体制》探讨了预算管理体制的核心概念、类型以及我国预算管理体制的演变,特别是中国的分税制改革。预算管理体制是处理中央与地方政府间财政关系的基础制度,涉及预算主体的独立性、集权...