虚拟中的多态与现实中多态
在现实世界中,同一事物可以有很多种不同的状态,比如水有固态,气态,和液态;但它们都继承了水的特性,它们的分子结构也是一样的,物理特性和化学特性也是一样的。
在代码中多态表现在类与类之间的关系,水是一个类,液态水是一个类,冰是一个类,水蒸气是一个类,但他们都来源于水。继承了水的特性,并且都属于水。同样,Java的面向对象不仅表现在事物的状态方面和事物的特征方面,更表现在事物的关系方面。现实中事物与事物之间的关系很复杂,而这些关系表现在他们所拥有的共同特征,这些共同特征被抽离出来,有一个特有的名称,比如在生物界从大范围到小范围依次分为界、物、门、纲、目、科、属、种、类,生物界,比如说人在生物界中就属于:脊椎动物门,哺乳纲,真兽下纲,灵长目,猿科,猴属,猴种,人类。在代码中表述一个人,一个人一个对象,这些对象基于同一个类创建,拥有这个类的共同属性和方法,比如生物界中人类的方法,人类的共同属性有名字,性别,爱好等等;人类的共有方法有繁殖后代,呼吸,有独立意识,会思考,等等;在代码中体现在如:
String name;
String color;
public Animal(){
}
public Animal(String name,String color){
this.name=name;
this.color=color;
}
public abstract void eat();/*{//方法的主体指的是大括号的内容
System.out.println("动物要吃饭");
}*/
public void sleep(){
System.out.println("动物在睡觉");
}
}
class Dog extends Animal{
public Dog(String name,String color){
super(name,color);
}
//狗需要啃骨头
public void eat(){
System.out.println("狗在啃骨头");
}
}
class Cat extends Animal{
public Cat(String name,String color){
super(name,color);
}
public void eat(){
System.out.println("猫在吃鱼");
}
}
class AnimalTest {
public static void main(String[] args){
Dog dog=new Dog("送来","黄色");
Cat cat=new Cat("杰斯","黑白色");
dog.eat();
cat.eat();
}
}
因为多态表现的是同一事物的不同状态,所以多态多表现在双方之间存在继承关系的类之间。在现实生活中,一件事物在不同条件下会呈现出不同的状态,但无论呈现出何种状态,他都是基于水都是,属于水这种类型,却又有自己的名字,所以在取水蒸气的时候既可以直接取蒸气,又可以取水。在代码中也是一样,用父类类型来表示子类的数据类型,再添上子类特有的属性和方法,或者什么都不添加,这就算是多态的表现!
我也就描述一下多态,还是自己的理解,不知道对不对,如有不当之处,还请各位博友斧正!
虚拟中的多态与现实中多态相关推荐
- C++中的封装、继承、多态
封装(encapsulation):就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成"类",其中数据和函数都是类的 ...
- JAVA之旅(八)——多态的体现,前提,好处,应用,转型,instanceof,多态中成员变量的特点,多态的案例...
JAVA之旅(八)--多态的体现,前提,好处,应用,转型,instanceof,多态中成员变量的特点,多态的案例 一.多态 我们今天又要学习一个新的概念了,就是多态,它是面向对象的第三个特征,何谓多态 ...
- java封装继承多态语法,GO语言中封装,继承,和多态
##封装 go中的封装和java的不太一样,在go里面是没有java中的class,不过可以把struct看成一个类,封装可以简单地看作对struct的封装,如下 type obj1 struct { ...
- rails 两表关联查询_Rails中的单表继承与多态关联:找到适合您的方法
rails 两表关联查询 by Haley Mnatzaganian 通过海利·姆纳扎卡尼安 Rails中的单表继承与多态关联:找到适合您的方法 (Single-table inheritance v ...
- 慕课网-C++远征之多态篇(中)-学习笔记
c++远征之多态篇 纯虚函数 & 抽象类 例子: class Shape { public:virtual double calcArea()//虚函数{return 0;}virtual d ...
- java中的多态性_[转载] c++多态与java多态性_Java中的多态性
参考链接: Java中的加法和串联 c++多态与java多态性 Polymorphism is one of the core concepts of OOPS paradigm. The meani ...
- 万字总结,一文带你秒懂Java中的封装、继承和多态(有代码 有示例)
Java中的封装.继承和多态 前言 一.面向对象有什么优势? 二.面向对象的三大特性! 1.封装 1.1访问限定符 1.2关于包的导入 1.2封装 2.继承 2.1继承的语法 2.2父类成员访问 3. ...
- 什么是多态,JAVA 中多态的实现机制
什么是多态,JAVA 中多态的实现机制 首先声明啊,这里的多态不是生物学和物理学上的多态性,这个是指编程语言中的多态. 官方说明: 多态(英语:polymorphism)指为不同数据类型的实体提供统一 ...
- python中的继承有什么特点_Python中 什么是面向对象-继承和多态
文字有点长,对于不想看文字的朋友,可以去这里看视频,内容和这个文字一样的,视频可能更好理解 https://www.piqizhu.com/v/zaX9K4pd4GE 上一篇文章<python教 ...
最新文章
- 自动驾驶行业内时间表和技术解析
- 命名实体识别NER 如何使用BERT实现
- SDWebImage的使用及图片不改变问题的解决
- Puppet集中配置管理系统[安装与配置]
- linux之杀死某个应用或命令的一行终极命令
- 数据结构之并查集:UF-Tree优化并查集——19
- pandas读取xlsx文件,编码问题
- ARM处理器寄存器和汇编指令系统
- Java进阶:SpringMVC中放行静态资源
- 华夏基金:养老是基金业下一个20年最大风口
- windows pe安装系统
- java商城加入购物车接口实现_商城系统购物车功能分析实现
- android模拟器 vt,逍遥安卓模拟器怎么开启VT模式 VT虚拟化设置方法
- python拼多多推广多店爬虫
- iFunk执政官游戏本,不仅仅是游戏本
- K、KB、M、MB、G、GB 、TB
- 想学设计?这6款设计软件不能不知道
- 团队RESTful 风格API规范
- 大数据架构中的流式架构和Kappa架构
- 聚焦品牌化 Morketing2018第二届跨境出口电商营销峰会成功举办
热门文章
- PDF办公技巧之PDF怎么删除其中一页
- 下载c语言软件后怎么解压,手机怎么解压文件 盘点常用手机压缩打包解压文件应用...
- 【OpenCV】⚠️高手勿入! 半小时学会基本操作 15⚠️ 对象测量
- 幸福三月丨盐城北大青鸟女神节快乐!
- 基于STM32的ESP8266天气时钟(2)--------MCU获取天气数据
- 引流产品用哪些比较合适?什么样的产品适合做引流?
- win10开机显示无网络连接服务器,Win10开机无法连接网络
- 一名3年工作经验的程序员应该具备的技能 !
- requests模块下
- 17.11.25B组总结