- 3种类型:类、接口、枚举
- 4个修饰符:private | protected | public、final、static、abstract
- 5大成员:成员变量、方法、构造器、初始化块、内部类
概念
多态:同一个类型的多个实例,在执行同一个方法,呈现出多种行为特征----这就叫“多态”。
为什么有多态?
因为Java执行方法时,方法的执行时是动态绑定的,方法总是执行该变量实际所指向对象的方法。
转换类型分为:
①向上转型:子类对象可以直接赋值给父类变量,自动完成。
SuperClass sup = new SubClass();
②向下转型:父类变量赋值给子类变量,强制转换——模式:(类型)变量名;
SubClass sub = (SubClass) sup;
强转运算符的注意点:
①强转运算符只能在编译类型具有继承关系的变量之间进行强转,否则编译错误:不兼容的类型。
②在编译类型具有继承关系的变量之间进行转换,如果被转变量的实际类型,不是要转的目标类型,程序就会引发ClassCastException(类型转换异常)
变量的类型
编译时类型:声明变量时指定的类型。在Java程序的编译阶段,Java编译器只认编译时类型。
运行时类型(实际类型):该变量实际所引用的对象的类型。
instanceof运算符
- 为了避免ClassCastException异常,Java增加的运算符。
- 变量名 instanceof 类型----当变量所引用的对象是后面类或子类的实例时,该运算符返回true。
- instanceof 只能在编译类型具有继承关系之间才能进行判断,否则编译报错:不兼容类型
- 该运算符可以保证,被强转的变量确实是可转换的才进行转换,从而避免ClassCastException。