0%

Java/Java-对象转换和instanceof

Java-对象转换和instanceof

要点提示:对象的引用可以类型转换为另外一种对象的引用,这称为对象转换。

对象转换

隐式转换

Object o = new Student();
Student类是Object类的一个子类

向上转换(upcasting)

总是可以将一个子类的实例转换为一个父类的变脸,称为向上转换,因为子类的实例永远是它的父类的实例。(不需要使用转换记号”(子类名)”)

向下转换(downcasting)

当把一个父类的实例转换为它的子类变量(称为向下转换)时,必须使用转换记号”(子类名)”进行显式转换,向编译器表明意图。

为使转换成功,必须确保要转换的对象是子类的一个实例。如果父类对象不是子类的一个实例,就会出现一个运行异常ClassCastException.

instanceof

instanceof 是java中的关键字

用法:

(A和B都是对象)
A instanceof B //用来确定A是不是B的一个实例

⚠️

*注意 *
对象成员访问运算符(.)优先于类型转换运算符。所以使用圆括号保证在点运算符(.)之前进行转换,例如:
((Circle)object).getArea();

另外,对基本类型值进行转换不同于对对象引用进行转换。转换基本类型值返回一个新的值,例如:
int age = 45;
byte newAge = (byte)age;// A new value is assigned to newAge

而转换一个对象引用不会创建一个新的对象。例如:
Object o = new Circle();
Circle c = (Circle)o; // No new object is created
现在,引用变量o和c指向同一个对象。