/*类对象的引用转换测试
向上:子-->父类
向下:父-->子
适用于继承关系之间
*/
public class ClassTest
{
public static void main(String[] args)
{
/*----------------向上转型-------------
*结果:保留派生类的数据和多态函数
------------------------------------*/
person ap = new student();
ap.setNum(22);
ap.sleep();
ap.setName("wei"); //多态性
//ap.setGrads(99); error
/*----------------向下转型--------------
**目的:忽略对象的实际类型(person),恢复创建对象(new student),
**---以便使用student的所用方法
*/
try{
//instanceof用于判断前面的对象是否是后面的类或其子类的实例,如果是返回true否则返回false
if (ap instanceof student) //检查
{
student aStudent =(student)ap; //向下转型person ->student
System.out.println("ok");
aStudent.setGrads(99); //转换完成,可使用student的所有方法
}
}catch(Exception e)
{
System.out.println("error");
}
}
}
class person
{
person()
{
Number=10;
}
public void setName(String string)
{
}
public void sleep()
{
System.out.println(Number+" :person sleep");
}
public void setNum(int num)
{
this.Number = num;
}
private int Number;
}
class student extends person
{
student()
{
nameString= "xxx";
grads = 0;
}
public void study()
{
System.out.println("study");
}
public void setName(String name)
{
this.nameString = name;
}
public void setGrads(int grads)
{
this.grads = grads;
}
private String nameString;
private int grads;
}
类对象的引用转换
最新推荐文章于 2024-06-06 14:00:00 发布