首页 > 代码库 > java上转型和下转型(对象的多态性)
java上转型和下转型(对象的多态性)
/*上转型和下转型(对象的多态性)
*上转型:是子类对象由父类引用,格式:parent p=new son
*也就是说,想要上转型的前提必须是有继承关系的两个类。
*在调用方法的时候,上转型对象只能调用父类中有的方法,如果调用子类的方法则会报错
*下转型:是父类向下强制转换到子类对象
*前提是该父类对象必须是经过上转型的对象。
*
*代码示例:*/
1 abstract class Parent{ 2 abstract void grow(); 3 } 4 class Son extends Parent{ 5 void grow(){ 6 System.out.println("我比父亲成长条件好"); 7 } 8 void dance(){ 9 System.out.println("我会踢球");10 }11 }12 public class test {13 public static void main(String[] args) {14 //上转型,用父类的引用子类的对象15 Parent p=new Son();16 //调用父类中有的方法17 p.grow();18 //p.dance();这里会报错,因为父类中没有dance()方法19 20 //对进行过上转型的对象,进行强制下转型21 Son s=(Son)p;22 //调用子类中的方法23 s.dance();24 }25 }
/*
* 在我们写程序中,很少会把代码写死,比如说还会有daughter类
* 然后在封装函数来调用对象,说不定会用到子类的方法,这里我们来讲解一下这一方面的知识*/
1 abstract class Parent{ 2 abstract void grow(); 3 } 4 class Son extends Parent{ 5 void grow(){ 6 System.out.println("我比父亲成长条件好一点:son"); 7 } 8 void play(){ 9 System.out.println("我会踢球");10 }11 }12 class Daughter extends Parent{13 void grow(){14 System.out.println("我比父亲成长条件好很多:daughter");15 }16 void dance(){17 System.out.println("我会跳舞");18 }19 }20 public class test {21 public static void main(String[] args) {22 Parent p=new Son();23 show(p);24 Parent p2=new Daughter();25 show(p2);26 }27 public static void show(Parent p){28 //现将父类中有的方法输出29 p.grow();30 //对进行过上转型的对象进行类型判断,然后进行相应的强制下转型31 if(p instanceof Son){32 //判断是哪个类的上转型对象,然后进行下转型33 Son s=(Son)p;34 //调用子类中的方法35 s.play();36 }else if(p instanceof Daughter){37 Daughter d=(Daughter)p;38 d.dance();39 }40 41 }42 }
java上转型和下转型(对象的多态性)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。