/*类对象的引用转换测试 向上:子-->父类 向下:父-->子 适用于继承关系之间 */ 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; }
类对象的引用转换
最新推荐文章于 2022-08-09 09:24:06 发布