第八章 动态
动态是一项将“以改变的事物与未改变事物分开的技术”,其用到了Java的“向上转型”,可以用基类的引用来指向导出类的对象,实现向上转型,程序运行时能够动态的绑定,除了static与final两个关键字不能实现动态绑定,其他的默认实现
其中基类的private方法不能被导出类所重写
第十章 内部类
如果想从外部类的非静态方法以外的地方创建内部类,比如main方法,都必须要OuterClassName.InnerClassName
普通类不能声明为private ,protected ,只能为public和默认
内部类的使用场景:
1.你需要解决一些复杂的问题,想创建一个类进行解决,而并不想这个类是公用的。
可以在一个方法里或是在任意作用域内定义内部类
第十一章 异常
}
1.所有的异常都继承了throwable接口,Throwable包含两个子类: Error 和 Exception
2.异常的类型:非运行时异常和运行时异常{
1.运行时异常不需要处理,系统会自动捕获RuntimeException
2.exception
}
try、catch、finally、throw、throws
可以把try...catch放到循环里直到获取到满足条件的值,才跳出循环,同时为了避免出现死循环,可以加入一个静态类型的计数器,当循环达到一定次数时,进行跳出,使程序更加健壮,当然也可以通过线程进行延时调用,这一点与前端定时器写法很像。
第十二章 类型检查
Java在运行时识别对象与类的信息的方式:
1.传统的RTTI,它假定我们在编译期和运行期已经知道了所有的类型,应用于编译期获取类的信息,适用于强转型,向下转型,与Java多态类似;
可以给效率低的代码进行加代码,利用RTTI提高效率。
2.“反射机制”,它允许我们在运行期获取到类的信息。
3.class.forName("类名称"),加载这个类,在运行时
4."类名称".class,加载这个类,在编译时,更加安全
对于基本数据类型,都有自己的包装类(包含void),都有自己的type域,含有一个此类的引用,char.class
= Character.Type
5.类型转化前先做检查:instanceof
if(x.instanceof(Dog)){
(Dog).draw();
}
6.类型检查:
1.new Dog().instanceof(Dog) 与Dog.getClass().isinstance(new Dog())两种比较方法一致,指是否为该类,或是该类的派生类,即包含继承关系
2.new Dog().getClass().equals(Dog.class) 与 “==”一致,是否为同一个类,不包含继承关系 379
第十二章:IO流