Day29instanceof和类型转换
2022-08-31 22:09 rebirthhhh 阅读(15) 评论(0) 编辑 收藏 举报instanceof
类型转换
package oop;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import oop.demo.Per;
import oop.demo.Stu;
import oop.demo.Tea;
public class Application {
public static void main(String[] args) {
//Objcet > Person >Student
//Objcet > Person >Teacher
java.lang.Object object = new Stu();
System.out.println(object instanceof Stu);//true
System.out.println(object instanceof Per);//true
System.out.println(object instanceof Object);//true
System.out.println(object instanceof Tea);//false
System.out.println(object instanceof String);//false
System.out.println("=============================");
Per per = new Stu();
System.out.println(per instanceof Stu);//true
System.out.println(per instanceof Per);//true
System.out.println(per instanceof Object);//true
System.out.println(per instanceof Tea);//false
//System.out.println(per instanceof String);//编译错误
System.out.println("=====================================");
Stu stu = new Stu();
System.out.println(stu instanceof Stu);//true
System.out.println(stu instanceof Per);//true
System.out.println(stu instanceof Object);//true
//System.out.println(stu instanceof Tea);//无关系
//System.out.println(stu instanceof String);//编译错误
//System.out.println(x instanceof y); 能不能编译通过取决于x和y是否有父子关系
}
}
package oop.demo;
public class Stu extends Per{
public void go(){
System.out.println("go");
}
}
package oop;
import oop.demo.Per;
import oop.demo.Stu;
public class Application {
public static void main(String[] args) {
//类型之间的转换:基本类型转换 :父 子
//高 低
Per obj = new Stu();
//Stu.go(); 不行
//student将这个对象转换为Student类型,就可以使用Student类型的方法了!
//(Stu)obj; alt+回车
Stu stu = (Stu) obj;//per类型转换为stu
stu.go();
//这两句就相当于下面这句!
((Stu)obj).go();
//子类转换为父类可能丢失自己的本来的一些方法
}
}
1.父类引用指向子类的对象 (前提)
2.把子类转换为父类,向上转型,可以直接转换 Person person = student
3.父类转换为子类,向下转型,强制转换(可能丢失方法)((Stu)obj).go();
4.方便方法的调用,减少重复的代码!简洁
Java的特性: 封装,继承,多态
抽象的编程思想。