java多态使用、向上转型、向下转型
来源:互联网 发布:netbsd 知乎 编辑:程序博客网 时间:2024/05/17 22:31
父类的引用指向子类对象 。
比father类,son类继承father类,
father f = new son();//向上转型
son s = (son) f;//向下转型
父类的引用f指向子类对象sun()的就属于多态,
多态性是允许你将父对象设置成为一个或更多的他的子对象。
多态可以节省开发和维护时间,避免了大量代码重复的使用,因为不需要再子类中重复定义执行相同功能的方法。
如果子类有覆写父类的方法,实际上调用的是子类的方法,重写是Java实现多态技术的重要方法。
Example1:
</pre><div style="text-align: justify;"></div></p><pre name="code" class="java">public class father { public static void main(String agrs[]){ father f = new father(); f.draw(new son1());//向上转型 多态的使用 f.draw(new son2()); } public void draw(father f){ //方法中使用父类作为参数类型 //具体实现 }}class son1 extends father{ son1(){ System.out.println("son1子类"); }}class son2 extends father{ son2(){ System.out.println("son2子类"); }}
Example2:
/** * Created by cuboo on 2016/10/12. */public class fathers { public static void main(String agrs[]){ //向上转型 调用子类相同方法(重写、方法一样) 多态的使用 father f = new son1(); f.draw(); //向下转型 调用父类及子类所有方法 son1 s1 = (son1) f; s1.draw(); s1.draw1(); s1.s(); //向上转型 调用子类相同方法(重写、方法一样) 多态的使用 father f1 = new son2(); f1.draw(); //向下转型 调用父类及子类所有方法 son2 s2 = (son2) f1; s2.draw(); s2.draw2(); s2.s(); }}class father { public void draw(){ //方法中使用父类作为参数类型 System.out.println("father draw"); } void s(){ System.out.println("father s"); }}class son1 extends father{ son1(){ System.out.println("son1子类"); } //与复类方法名相同 public void draw() { System.out.println("son1 draw"); } public void draw1() { System.out.println("son1 draw1"); }}class son2 extends father{ son2(){ System.out.println("son2子类"); } //重写父类方法 @Override public void draw() { System.out.println("son2 draw"); } public void draw2() { System.out.println("son2 draw2"); }}
Example3:
/** * Created by cuboo on 2016/10/12. */public class fathers { public static void main(String agrs[]){ //向上转型 调用子类相同方法(重写、方法一样) 多态的使用 father f = new son1(); f.draw(); //向下转型 调用父类及子类所有方法 son1 s1 = (son1) f; s1.draw(); //向上转型 调用子子类相同方法(重写、方法名一样) 多态的使用 f = new gson(); f.draw(); //向上转型 调用子类相同方法(重写、方法一样) 多态的使用 father f1 = new son2(); f1.draw(); //向下转型 调用父类及子类所有方法 son2 s2 = (son2) f1; s2.draw(); }}interface father { public void draw();}class son1 implements father{ @Override public void draw() { //具体实现 System.out.println("son1的draw"); }}class son2 implements father{ @Override public void draw() { //具体实现 System.out.println("son2的draw"); }}class gson extends son1{ @Override public void draw() { System.out.println("gson的draw"); }}
0 0
- java多态使用、向上转型、向下转型
- java多态向上、向下转型问题
- Java 多态部分 向上转型 向下转型
- java多态中的向上转型和向下转型
- Java向上转型和向下转型(多态核心)
- java多态向上转型和向下转型
- java的多态(向上转型、向下转型)
- 多态实现(向上转型、向下转型)--java
- Java 多态部分 向上转型 向下转型
- java 多态中的向上转型和向下转型
- 【Java】向上转型 向下转型
- Java 向上转型,向下转型
- java 向上转型向下转型
- 多态中的向上转型,向下转型
- 向上转型 向下转型
- 向上转型、向下转型
- 向上转型,向下转型
- 向上转型、向下转型
- Android 软键盘不把布局弹上去
- 第五周【项目一-建立顺序栈算法库】
- 新.使用二重循环打印如图-1所示的图形。
- C#日期的格式化
- RANSAC算法
- java多态使用、向上转型、向下转型
- eclipse自动补全设置
- Android文件命名规范初版
- OkHttp、NoHttp、Volley简单介绍
- BZOJ3613 [Heoi2014]南园满地堆轻絮
- 集成支付宝 报错 “openssl rsa.h file not found”
- 如何使用PS曲线调整对比度、亮度及色调
- osworkflow跨步骤应用实例
- Kafka怎么和Zookeeper配合使用