面向对象第5课——转型
2016-09-26 09:09 宇航员舒克 阅读(152) 评论(0) 收藏 举报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(类)的前面,类不可以被继承
//放到方法前,不能被继承,重写覆盖。
//放到构造方法前不可以,不可以被重写。

浙公网安备 33010602011771号