面向对象的思想是上个世界60年代出现的,一些比较典型的面向对象的编程语言包括JAVA、C++等。很多脚本语言也支持面向对象的语法比如PHP、Python。

什么是面向对象呢?它是一种现实对象的建模方法,通过对象这种数据结构来映射现实世界的物质、关系等等,在JAVA编程思想中有一句话总结万物皆对象。比如我们看到的人、动物、植物等等,包括了这个东西的静态本质的东西就是属性,比如人有眼睛、鼻子、耳朵、腿,还包括了对象的动态行为包括人可以走、跑、跳、吃、喝、拉、撒、睡称之为方法。所以对象这个东西就可以理解为一种特殊的数据结构,这个结构包括了要描述对象的静态属性和动态行为:Object{properties,actions}。人是一种通用描述,因为现实中每个人都有不同,所以我们把人这个对象描述为‘人类’。所以大家看到了,类是一组对象的共同抽象,这里就设计到了面向对象程序设计的第一特征:抽象。在C语言编程的时候是没有类这一层抽象的,主要围绕某个功能来实现,而功能对应某个算法的步骤或流程所以称之为面向过程的编程。

有了类的概念我们如何映射到某一个具体的人呢,于是就有了面向对象的第二个重要的概念:继承和多态。故名思议,继承就是传承的意思,比如古话云龙生龙、凤生凤,老鼠生来会打洞说的就是这个意思,直接从字面上理解就好了,被继承的类就称为父类,而继承的类就称为子类。能从多个类中继承,比如狮虎兽,就是同时继承了狮子和老虎的特征,这种行为称为多继承,只能从一个类中继承的称为单继承。比如C++就支持多继承语法,而JAVA只支持单继承。多态是指一个类可以有多个类型的子类,比如水果包括了苹果、梨、香蕉、草莓等等,他们都具有水果的基本属性同时又各有不同。多态描述了世界的多样性,抽象表达了世界的统一性。

面向对象最后一个特征就是封装,封装的思想就是保密的意思,类中不希望别人看到的属性和方法我就可以用封装的概念保护起来,封装包括了:可以公开访问、包和子类可访问、私有三个层次。

在没有面向对象编程语言之前,程序设计主要通过变量、函数和文件来实现,软件复用的层次主要在函数、文件层面,缺乏更大粒度的复用单元。有了面向对象语言以后,软件描述能力更接近真实世界,复用的层次上升到了类、包,他们既包含静态结构又包含动态方法的层次,使得功能和架构级的复用成为可能。

java面向对象的理解_面向对象及其核心的概念:抽象、继承与多态、封装相关推荐

  1. java程序设计清考_面向对象程序设计(Java)-题库

    <面向对象程序设计(Java)-题库>由会员分享,可在线阅读,更多相关<面向对象程序设计(Java)-题库(33页珍藏版)>请在金锄头文库上搜索. 1.面向对象程序设计 (ja ...

  2. java实现鸭子类型_面向对象—多态、鸭子类型(Day21)

    编程原则java具有自己的编程原则和设计模式,不能多继承. python的编程原则: 1.开放封闭原则:开放是对扩展是开放的,封闭是对修改是封闭的(已经写完的代码程序是不能修改的). 2.依赖倒置原则 ...

  3. java 线程的理解_浅谈对多线程的理解(一)

    今天我们先来聊聊有关线程的话题...... 一. 线程概述 1. 简单区分程序.进程和线程 程序是指一段静态的代码 进程是指正在执行的程序,将静态的代码运行起来 线程是指正在执行程序的小单元 举个栗子 ...

  4. python中面向对象的缺点_面向对象中的多态在 Python 中是否没有什么意义?

    谢邀! 话说,你为什么说Python中没有数据类型的概念.Python肯定是有数据类型的,在我所见的所有语言中,没有一门编程语言是没有数据类型的. 依据你的问题,我理解或许你的意思是,Python没有 ...

  5. Java实验报告 理解类的多态性,掌握方法的继承、重载和覆盖,掌握如何从键盘输入数据以及多重循环的使用

    桂 林 理 工 大 学 实  验  报  告 班级软件16-2班 学号 3162052051734姓名梁振宇同组实验者 实验名称Java语言基础练习日期 2018年 05 月31 日 一.实验目的: ...

  6. 爱上c++的第六天(核心课程):继承和多态

    你的c++学习路上明灯 你的c++学习路上明灯_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV16P4y1M7cX?p=10 目录 继承: 一,基本介绍: ...

  7. java多线程电梯调度_面向对象之多线程(可捎带电梯调度)

    面向对象之多线程(可捎带电梯调度) 1. 题目重述 ​本题完成的任务为多部多线程可捎带调度电梯的模拟,电梯系统具有的功能为:上下行.开关门.新增一部可以使用的电梯,电梯系统在某一层开关门时间内可以上下 ...

  8. java面向对象模拟电梯_面向对象的程序设计-电梯调度系统的设计、优化与测试...

    面向对象的程序设计(2019)第二单元总结 I  对问题的初体验 在开始OO之旅前,对OO电梯早有耳闻.这一次终于轮到我自己实现OO电梯了.首先从顶层需求出发对电梯系统进行分析,对象包括电梯.任务和乘 ...

  9. java class 生成对象_面向对象编程,你知道Java有哪些创建对象的方式吗?

    来源:CSDN____爱敲代码的小游子 1.用new关键字创建对象,需要使用构造器. new 一个对象经过了哪些过程? 2.使用反射机制创建对象,用Class类或Constructor类的newIns ...

最新文章

  1. 如何制作一个通用的多系统安装U盘七(Windows相关配置)
  2. Login failed with an access denied error.
  3. 哪里可以接到python的活干-学了Python以后,我干了很多不是人干的活
  4. 通过IDEA查看某个类的继承关系
  5. 混淆视听的感脚(二)
  6. 【bzoj1597- [Usaco2008 Mar]土地购买】斜率优化
  7. 关于召开中国医药教育协会医学基因组学与生物信息学专业委员会成立大会暨临床全基因组外显子组家系数据分析培训会的通知...
  8. CASE WHEN语句中加IN应该如何使用
  9. 互联网计算机技术方面的入门书籍有哪些推荐?
  10. python统计及格不及格人数_Python一次输入多个值(列出存储信息),python,一次性,数值,列表...
  11. linux服务器搭建_Linux怎么搭建ftp服务器,Windows怎么访问?按此教程10分钟完成...
  12. 怎么对接口做幂等性操作?
  13. C变量的直接引用与间接引用区别
  14. Unity - 射线检测
  15. 10种令人吃惊的方式你的日常生活中正在收集数据的大数据野兽
  16. 信息收集:CCF大学生计算机系统与程序设计竞赛(CCSP)
  17. 手动设置网页cookie的值
  18. js 计算当前时间和和一段时候后的工作日天数,排除周末和法定假日
  19. 2015最具成长性、发展力的创新互联网公司100佳
  20. 计算机相关专业大学上海,上海哪几个大学计算机专业的系比较好

热门文章

  1. .jar文件无法运行的解决方法
  2. “服务器发送了一个意外的数据包。received:3,expected:20“问题的解决方法
  3. Ubuntu 20.04 上搭建 LEMP/LAMP 环境运行 WordPress
  4. SVN仓库安装、备份和迁移基本操作
  5. could not connect to server: No route to host Is the server running on host 192.168.163.181 and a
  6. Ubuntu 16.04 源码编译安装PHP7.2.23详细过程
  7. Tomcat和Weblogic的区别
  8. 【Hive】Hive分区表
  9. 【SQL】分析函数功能-排序
  10. vuecli+axios的post请求传递参数异常