Java面向对象之多态(向上、向下转型) 入门实例
一、基础概念
多态:
重点是对象的多态性。某一事物的多种体现形态。
多态的作用:
1.提高了代码的扩展性,后期出现的功能,可以被之前的程序所执行。
2.不能使用子类特有的功能。只能使用覆盖父类的功能。
多态的前提:
1.必须要有继承关系或者实现关系。
2.通常对方法进行重写、覆盖。
3.父类或者接口要引用指向子类对象。
多态向上转型:
1.提高程序的扩展性,隐藏了具体子类型
2.只能使用父类中的功能,不能使用子类特有的功能。功能被限定了。
多态向下转型:
1.可以使用子类型的特有功能。
2.必须面对具体的子类型。
3.为了避免运行时出现ClassCastException 问题,需要用关键字instanceof来进行判断。
注意:
多态至始至终都是子类对象在做着类型的变化。
二、代码实例
1 //父类Animal 2 abstract class Animal 3 { 4 abstract void eat(); 5 abstract void sleep(); 6 } 7 8 //Dog类继承Animal类 9 class Dog extends Animal 10 { 11 /** 12 将Animal类中的方法重写 13 */ 14 void eat() 15 { 16 System.out.println("dog eat 吃骨头"); 17 } 18 void sleep() 19 { 20 System.out.println("dog sleep ....."); 21 } 22 23 /** 24 自己特有的方法 25 */ 26 void say() 27 { 28 System.out.println("dog say ....."); 29 } 30 } 31 32 //Cat类继承Animal类 33 class Cat extends Animal 34 { 35 /** 36 将Animal类中的方法重写 37 */ 38 void eat() 39 { 40 System.out.println("Cat eat 吃鱼"); 41 } 42 void sleep() 43 { 44 System.out.println("Cat sleep ....."); 45 } 46 } 47 48 class DuoTaiDemo 49 { 50 //封装Dog类的方法 51 public static void method(Dog d) 52 { 53 d.eat(); 54 d.sleep(); 55 d.say(); 56 } 57 58 //封装Cat类的方法 59 public static void method(Cat c) 60 { 61 c.eat(); 62 c.sleep(); 63 } 64 65 //封装父类Animal的方法 66 public static void method(Animal s) 67 { 68 s.eat(); 69 s.sleep(); 70 } 71 72 public static void main(String[] args) 73 { 74 Dog d1 = new Dog(); 75 method(d1); 76 77 Cat c = new Cat(); 78 method(c); 79 80 Animal s = new Dog(); //多态性,向上转型,将Dog提升为Animal。 81 method(s); //只能使用覆盖了父类Animal的eat方法和sleep方法。不能使用Dog类中自己的say方法。 82 83 Animal a = new Cat(); //多态性,向上转型。 84 method(a); 85 86 /** 87 向下转型,为了避免运行时出现ClassCastException 问题, 88 需要用关键字instanceof来进行判断。 89 */ 90 if( !(s instanceof Dog)) 91 { 92 System.out.println("类型不匹配"); 93 return ; 94 } 95 Dog d2 = (Dog)s; //多态性,向下转型。 96 d2.eat(); 97 d2.sleep(); 98 d2.say(); 99 } 100 }
三、运行代码
转载于:https://www.cnblogs.com/zhuxr/p/8943897.html
Java面向对象之多态(向上、向下转型) 入门实例相关推荐
- Java阻断继承和向上向下转型
1.阻断继承 从Java15开始,允许使用sealed修饰符,并通过permits明确写出能够从该class继承的子类名称.这种sealed类主要用于一些框架,防止继承被滥用.sealed类在Java ...
- 【java基础18:方法覆盖与多态】什么时候使用方法覆盖 toString方法的覆盖 多态的基础语法与作用 向上/向下转型
目录 方法覆盖Override 多态 方法覆盖Override 方法覆盖初体验,什么样的程序要方法覆盖 /*当前程序存在的问题(设计上的问题)??鸟儿在执行move()方法的时候,最好输出的结果是:& ...
- Java面向对象:多态——基于继承的向上转型、方法重写、动态绑定
Java面向对象:多态 1.多态的概念 2.向上转型和向下转型 (1)向上转型 (2)向下转型 3.方法重写 4.动态绑定与静态绑定 5.多态的优缺点 ======================== ...
- 12 Java面向对象之多态
JavaSE 基础之十二 12 Java面向对象之多态 ① 多态的概念及分类 多态的概念:对象的多种表现形式和能力 多态的分类 1. 静态多态:在编译期间,程序就能决定调用哪个方法.方法的重载就表现出 ...
- Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型...
任何类都是object类的子类 用object对象接收数组 object类的向上向下转型 转载于:https://www.cnblogs.com/qingyundian/p/7744351.html
- Java 面向对象:多态的理解
Java 面向对象:多态的理解 一.多态的定义 一个对象的实际类型是确定的,但可以指向引用对象的类型可以有很多(父类,有关系的类) 操作符的多态 +可以作为算数运算,也可以作为字符串连接 类的多态 父 ...
- Java面向对象之多态(来源于身边的案例)
2019年1月3日 星期四 Java面向对象之多态(来源于身边的案例) 1. 为什么要用多态? 1.1 多态是面向对象的三大特性之一 1.2 多态是基于接口设计的模型 1.3 多态具有横向扩展特性 1 ...
- Java多态与向上向下转型
多态的必要三要素 1.继承 2.方法重写 3.向上转型 多态的作用 1.增加代码的复用性 2.便于代码的管理与维护 案例引入 代码: //测试类 public class Test {public s ...
- java 面向对象的多态性——向上转型与向下转型
目录 类定义了之后需要被调用定义对象才能执行. 在前几篇中讨论了抽象类和接口,其中抽象方法是对这样的动作的抽象描述:动作名称相同,但不同类别具体执行动作的内容不同. 如:人类有"工作&quo ...
- 面向对象3(final、static、instanceof、向上/向下转型、初始化次序)
1. final 对于基本类型,final 使数值不变: 对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的. 可用来修饰类.类的成员.局部变量: final ...
最新文章
- web前端零基础入门学习!前端真不难!
- windows API函数copyfile
- 第十天-linux命令及基础手把手实战
- matlab eval函数_matlab自动给变量命名
- java ee 7 新_Java EE 7:新功能???
- 微型计算机方面的论文,微型计算机论文.doc
- 证券投资深度学习_安信证券:“深度学习”开启新一轮计算模式变革
- 计算机管理 没有适当的权限,提示没有合适的权限访问怎么办
- 黑客攻防技术宝典web实战篇:利用信息泄露习题
- Python垃圾回收机制 总结
- CentOS安装并设置MariaDB
- 软件nginx 0.8.16
- 对抗生成网络GAN系列——CycleGAN简介及图片春冬变换案例
- 微众银行风险模型笔试前做的准备(公司介绍+欺诈与反欺诈+sql+机器学习)
- 数据安全管理条例明确个人信息保护 360呼吁隐私保护重在企业
- 网络打印机无法接收打印命令
- MySQL 从 8.0.31 开始从原来的 mysql:mysql-connector-java 改为 com.mysql:mysql-connector-j
- 游戏服务器内三类线程池的划分与使用
- Html设置文本换行与不按行操作
- openlayers2.13 地图绘点[点可以拖动,并且实时更新后台数据],测距同时更新数据到数据库
热门文章
- 重建二叉树(C++)
- 网络核心之数据交换-电路交换
- 游戏开发之C++类和对象相关概念实例(C++)
- webpack多环境(dev stg prd qa)打包问题
- centos6.5 安装svn可视化管理工具 if.svnadmin
- 学习 (2012.01)
- Miniflter中 NPInstanceSetup调查
- 如果这样 你跟小三走吧
- 关于EPOLL的ET和LT模式的深入理解
- python统计图的三层结构设计代码_【Python数据可视化】用Matplotlib绘制常见统计图,中文显示字体任意设置...