java强制类型转换
精选 转载Java 语言的多态性机制导致了引用变量的声明类型和其实际引用对象的类型可能不一致,在结合虚方法调用规则可以得出下述结论:声明为同种类型的两个引用变量调用同一个方法时,也可能会有不同的行为。
为更准确的鉴别一个对象的真正类型,语言引入了instanceof java 操作符,其使用格式为:<引用类型变量>instanceof<引用类型> 这是 boolean 类型的表达式,当 instanceof 左侧的引用类型所引用的对象的实际类型是其右侧给出的类型或其子类类型时,整个表达式的结果为 true,反之为 false。
案例名称:instanceof 关键字的使用
程序名称:InstanceOfTest.java
class Person2 extends Object{}
class Student2 extends Person2{}
class Worker extends Person2{}
public class InstanceOfTest {
public void method(Person2 e) {
if (e instanceof Person2) {
System.out.println("this is Students");
} else if (e instanceof Worker) {
System.out.println("this is Worker");
} else {
System.out.println("this is a Person");
}
}
public static void main(String[] args) {
InstanceOfTest t=new InstanceOfTest();
Worker w=new Worker(); t.method(w);
}
}
程序解释:InstanceOfTest 类的 method1 方法,根据传入的不同对象确定调用不同的语句,java 基本类型的相互转换,包括自动类型转换和强制类型转换机制,java 引用类型数据也存 在类似的机制。
1 ○默认类型转换:子类类型的数据可以直接赋值给父类类型的引用变量。
2 ○强制类型转换:也称为对象造型,父类类型的数据可以被强制转换为其子类的类型。造型 的语法格式为:(子类类型)父类类型数据,使用方法如程序 CastingTest.java 所示。
案例名称:强制类型转换 程序名称:
CastingTest.java
class Person3{ String name; }
class Student3 extends Person3{
String school="pku";
public String getSchool(){
return school;
}
}
public class CastingTest {
public void method(Person3 e) {
//System.out.println(e.getSchool());//非法
if(e instanceof Student3){
Student3 me=(Student3)e;
System.out.println(me.getSchool());
}
}
public static void main(String[] args) {
CastingTest t=new CastingTest();
Student3 m=new Student3(); t.method(m);
}
}
程序解释:语句 t.method(m)中的m是 Student3 的实例,method 方法的参数 “method Person3e) ( ” 因此吗赋值给了 Person3 声明的变量。因此方法 getSchool()没有在父类 Person3 中定义,因此不能直接调用,使用前需要竞夺强制转换。
强制转换是还需要注意一次额问题:
无继承关系的引用类型间的转换是非法的,编译时会出错;
并不是任意的父类类型数据都可以被造型为子类类型,在造型前可以使用 instanceof 操 作符测试一个对象的类型,以避免运行是出错。
上一篇:document类的用法归总
下一篇:数据库表间关系及作用
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
强制类型转换(Java)java 语言 学习小结
-
JAVA强制类型转换顺序 java的强制类型转换
java引用类型的类型转换规则• 引用类型的类型转换只能发生子父子之间;• 子类自动可以转换成父类的对象• 父类需要强制类型转换才能转换成子类.但是只有父类的引用指向子类对象的时候才能强转成功• 在强制类型转换前要用instanceof来判断一个对象的类型
JAVA强制类型转换顺序 java 强制类型转换 java强制类型转换 父类 子类