package zhuanxing; ///转型课件(在继承的基础上转型) public class father { public void work() { System.out.println("我劳动我光荣"); } } package zhuanxing; public class son extends father { //父类方法的重写 public void work() { System.out.println("我不想工作"); } public void sing() { System.out.println("我喜欢唱歌"); } //当不确定是什么类型时用Object然后在向下转型 public Object geto() { return "123456"; } } package zhuanxing; public class fathertest { public static void main(String[] args) { father f=new father(); son s=new son(); s.work(); //向上转型,左到右,son转成father,(最上方是原始类) father f1=new son(); f1.work(); //f1.sing(); 错误, 不可以继承多余father的东西 //向下转型 son s1=(son)f1; s1.work(); s1.sing(); //Object能装下所有类型的数据类型,先向上转型,在向下转型 //向上转 Object obj=new father(); Object[] ary=new Object[5]; ary[0]=123; ary[1]="asd"; ary[2]=new father(); ary[3]=f1; ary[4]=s1; //向下转 //判断instanceof,判断x,是不是y对象的类型 if(ary[4] instanceof son) { son obj1=(son)ary[4]; obj1.sing(); } else { System.out.println("类型不符"); } // if(ary[2] instanceof father) // { // son obj1=(son)ary[2]; // obj1.work(); // } // else // { // System.out.println("类型不符"); // } //泛型 } } //转型总结 //转型: // 向上转型——隐式转换——把子类对象转换成父类(1.隐藏了子类自己的成员和方法,只能访问到父类的成员和方法。2.如果在子类中父类的方法被重写就调用子类中的重写方法) // 向下转型——强制转 ——把父类对象转换成子类(1.一般先有向上转型为前提,才可以进行向下转型。2.如果类型不符或不是子类,就会转换失败,可以用instanceof判断) //转型也是多态的一种表现形式 //操作符(instanceof):格式为:实例 instanceof 类名,返回结果:该实例是否是该类或子类的实例。 //final关键字(终态的) //可以放到变量前面,表示常量,只能被赋值一次 //放到lcass(类)的前面,类不可以被继承 //放到方法前,不能被继承,重写覆盖。 //放到构造方法前不可以,不可以被重写。