热门标签 | 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要领,返回的孩子却不一样呢?这就是多态。当同一个操纵(要领)作用与差别的对象时,会发生差别的实行效果。

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


推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 非公版RTX 3080显卡的革新与亮点
    本文深入探讨了图形显卡的进化历程,重点介绍了非公版RTX 3080显卡的技术特点和创新设计。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • Søren Kierkegaard famously stated that life can only be understood in retrospect but must be lived moving forward. This perspective delves into the intricate relationship between our lived experiences and our reflections on them. ... [详细]
  • 计算机网络复习:第五章 网络层控制平面
    本文探讨了网络层的控制平面,包括转发和路由选择的基本原理。转发在数据平面上实现,通过配置路由器中的转发表完成;而路由选择则在控制平面上进行,涉及路由器中路由表的配置与更新。此外,文章还介绍了ICMP协议、两种控制平面的实现方法、路由选择算法及其分类等内容。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 在前两篇文章中,我们探讨了 ControllerDescriptor 和 ActionDescriptor 这两个描述对象,分别对应控制器和操作方法。本文将基于 MVC3 源码进一步分析 ParameterDescriptor,即用于描述 Action 方法参数的对象,并详细介绍其工作原理。 ... [详细]
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社区 版权所有