作用
判断一个对象是否是指定的类
void feedAnimal(Animal anim) { System.out.println(anim.getClass()); anim.eat(); /** 1.类的强制类型转换:把父类对象赋值给子类类型 2.instanceof : 判断一个对象是否是指定的类, 如果是 返回 true 不是, 就返回 false */ if(anim instanceof Dog) { Dog dog = (Dog)anim; dog.doWork(); }else if(anim instanceof Cat) { Cat cat = (Cat)anim; cat.watch(); } }
代码块
概念
在类中或方法当中 使用 {}
括起来的一段代码,就称它是一个代码块
总结
分类
局部代码块
直接定义在 方法内部
的代码块,在调用方法的时候执行
初始化代码块
直接在 类当中
定义代码块,初始化代码块在 运行时
,还是要把它放到构造方法当中
静态代码块
在初始化代码块前面加上一个 static
,在什么时候执行:在加载字节码时就会自动调用,在主方法之前执行的。只执行一次
类加载问题
类的加载
当第一次创建该类对象的时候,加载到内存当中,在加载时,会执行 static 静态代码块
字段初始化问题
静态字段初始化
:是在静态代码块当中初始化,非静态字段初始化
:它是在构造器当中做的初始化
子类构造器默认会调用父类的构造器