java继承之五(instanceof(类型转换)、引用类型)
instanceof作用:判断两个类之间是否存在父子类关系。
import java.util.Scanner; public class Main { public static void main(String[] args) { Object obj=new Stror(); Proae pr=new Stror(); //使用instanceof判断的前提是,两边的类型有关系的前提下才可以,如果两边完全没有父子类关系的话编译是不会通过的 System.out.println(obj instanceof Stror);//通过instanceof方法去判断obj是否Srtor类型的 System.out.println(pr instanceof Stror); //注意使用instanceof对比想要编译能通过,他们一定得要有父子类关系,如果没有关系那编译就会报错 } } //子类 class Stror extends Proae{ } //父类 class Proae{ }
类型转换:
import java.util.Scanner; public class Main { public static void main(String[] args) { //类型之间的转化:基本类型转换注意高低就行,如果从高转到低就需要进行强转了 //类型之间的转: 父>子 //例子1:父 转 子 //高 低 Proae st=new Stror(); //当前的对象是父类指向子类的引用,那我们现在想调用Stror类中的方法是调用不了的 // st.go();//无法调用子类中的方法 // ((Stror)st).go();如果不想像下面一样先把对象拆分来转换为stror类型,就想调用子类方法,可以像这样直接写成一句代码即可 //如果想要调用Stror中的方法,那我们可以让Stror将Proae这个对象转换为stror类型,我们就可以使用stror类型的方法了,如下 //目前st对象的类型是proae的类型,因为proae是stror的父类,所以想把st转换成stror类型的话我们就得要强制转换 Stror pr=(Stror)st;//把 //pr.go(); //例子2:子 转 父 Stror stu=new Stror(); stu.go();//可以直接调用子类方法 Proae pe=Stror;//直接可以转换为子类的类型,不需要强制转换 pe.go();//无法调用 ,因为子类转换为父类,可能丢失自己的本来的一些方法 } } //子类 class Stror extends Proae{ public void go(){ System.out.println("go"); } } //父类 class Proae{ public void run(){ System.out.println("run"); } }
多态总结:
1.父类引用指向子类的对象
2.把子类转换为父类:向上转型,不用强制转换
3.把父类转换为子类:向下转换:需要强制转换,可能会丢失一下方法(基本类型强制转换会丢失精度)
4.为了方便方法调用:不用重新创建一个类,直接把方法升级或降级一下,就可以直接调用对应类的方法了,这样可以减少我们的代码,让代码变得理简洁。


浙公网安备 33010602011771号