热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

假如天主是程序员,他是怎样制造世界上一切动物的?

tips:本文只管用质朴易懂的言语来诠释面向对象的头脑。荒古时代天主起首制造了几个原始类originalclass。比方:动物类Animal,植物类Plant,地形类Topogra

tips:本文只管用质朴易懂的言语来诠释面向对象的头脑。

荒古时代

天主起首制造了几个原始类 original class。比方:动物类Animal,植物类Plant,地形类Topography,气候类Atmosphere等作为地球上统统物资的末尾,而本文我们将运用动物类作为例子。

分类而生

在制造了动物类Animal以后,为它添加了大众属性mouth:true大众要领eat(){},mating(){}

以后他决议最先细分,这里我们做的简朴一点,并不依据“界门纲目科属种”的分类依据,而是直接依据人类Human,猫类Cat,狗类Dog 等举行细分。

他依据动物类Animal制造了人类Human,我们能够说,人类继续自动物类,所以人类这个类中也会存在动物类的大众属性和大众要领。一样的,人类也有本身的大众属性stand:true大众要领farming(){} 。然后,天主依据人类Human制造了一个人:小明。

小明是一个依据Human制造出的实例对象,20岁的会弹钢琴的男性程序员,他同时继续AnimalHuman类的大众属性大众要领

mouth:true,
stand:true,
farming(something){
...
},
eat(something){
...
},
mating(someone){
return xxx
}

而他的私有属性occupation:programmer私有要领playingPiano(){...},小明把他的个人状况都藏起来【封装】,只要他通知他人本身的状况,他人才会晓得,而且他人不晓得他会弹什么曲子的,只能说“小明你弹个钢琴给我听一下”。挪用
小明.playingPiano()封装以后只要对外供应接口后才能够运用

有一天,小明认识了一个女生小白,小白是一个21岁的会唱歌的客服,私有属性customService私有要领singing(){...}。厥后他们谈恋爱而且完婚了,有一天小明挪用了本身的要领mating,并将小白作为参数传入,随后return出了一个孩子:小黑。然则小黑并没有继续小明的playingPiano和小红的singing,反倒是有了本身的私有属性tellingStory。但唯一和小明另有小红一样的是,他继续了动物类Animal和人类Human大众属性大众要领

与此同时,另一对夫妻小华和小花,他们也挪用了本身的mating,然则 return 的是另一个与小黑差别的孩子——小月,她的私有属性与她的父母都差别,是playingBasketball,但一样的,她也继续了动物类Animal和人类Human大众属性大众要领

为何都挪用了mating要领,返回的孩子却不一样呢?这就是多态。当同一个操纵(要领)作用与差别的对象时,会发生差别的实行效果。

以上,面向对象的三个基本特征 封装、继续、多态 都讲完了。一定讲的不够深切,如果有什么明白上不正确的迎接在批评区中斧正,也迎接人人议论。


推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 计算机网络复习:第五章 网络层控制平面
    本文探讨了网络层的控制平面,包括转发和路由选择的基本原理。转发在数据平面上实现,通过配置路由器中的转发表完成;而路由选择则在控制平面上进行,涉及路由器中路由表的配置与更新。此外,文章还介绍了ICMP协议、两种控制平面的实现方法、路由选择算法及其分类等内容。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
author-avatar
初语2265_781
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有