面向对象OOP是基于面向过程而言,面向对象简单来说就是将功能封装到对象(数据和操作结合)里,我们面向对象,让对象去完成这些功能。
万物皆对象。(在我们程序员眼中,一切皆对象)

理解面向对象:

经典案例:把大象塞进冰箱
1>>面向过程的做法:1.打开冰箱门 2.把大象塞进去 3.关闭冰箱门
当有两个不同的人用不同的方法实现这样的步骤,我们需要为不同的人量身定做不同解决事情的方法。
2>>面向对象,找个对象帮你做事
我们把冰箱作为对象,1.冰箱门可以被打开 2.大象可以被塞进去 3.冰箱门可以被关闭(面向对象写出通用的方法,屏蔽了所有人的差异)

如:关门
面向过程
张三踹开门
李四轻轻关上了门
面向对象:关门 门可以被关闭(可以避免上述面向过程的差异)
总结:从被动方去找对象

描述对象:描述对象的属性和方法。对象是看得见摸得着的。
我们把具有相同属性和相同方法的对象进行进一步的封装,得到类的概念。
类包含:
Fields 字段(存数据,私有);Methods方法; propertites属性(中间熵,public)

如:类是一个盖大楼的图纸,对象是盖出来的大楼。类是不占内存的,对象占内存,也就是类的字段占内存

Person mk=new Person();//自定义类Person
this._name=‘mk’;//this代表当前类的对象,在这里指mk这个对象

       //Fieldsstring _name;/// <summary>/// property  能对字段的取值和赋值进行限定/// </summary>public string Name{get { return _name; }set {this._name = value; }//赋值时,给属性赋值,执行set方法通过value传给字段_name}int _age;public int Age{get{ return _age;}set//赋值时检测形参的数据{if (value < 0 || value > 100){value = 0;//不正常,则给value重新赋值}_age = value;}}char _gender;public char Gender{get//打印数据(存在字段里)时,检测数据{if (_gender != '男' && _gender != '女'){_gender='男';}return _gender;}set { _gender = value; }}

当打印(获取)数据时,应该访问属性,因为属性有get,set方法,可以对数据的取值赋值进行检测,如果直接获取字段,则不会执行我们的检测代码
属性的作用是保护字段,为字段的取值和赋值进行限定。和外界打交道的是属性
属性的本质:get() ; set() 方法,可读可写

重写与重载,隐藏的区别:

重写:发生在子类和父类之间,当子类继承父类中的方法时,子类中的方法与父类方法的名称,参数个数,参数类型完全一致时,称子类重写了父类的方法。
重载:一个类中的多个方法的名称相同,参数个数或者参数类型不同,则称为重载方法
覆盖:子类重新实现了父类的方法,而隐藏只是把父类中的方法藏了起来,通过父类的引用来调用这个方法的时候,这个被隐藏的方法就被激活了。

了解三大特性:封装,继承,多态

  • 封装
    ---->减少了大量的冗余代码
    ---->封装将复杂的功能封装起来,对外开放一个接口,简单调用即可。
    将描述事物的数据和操作封装在一起,形成一个类;被封装的数据和操作只有通过提供的公共方法才能被外界访问(封装隐藏了对象的属性和实施细节),私有属性和方法是无法被访问的,表现了封装的隐藏性,增加数据的安全性。

  • 继承–单根性,传递性
    ---->减少了类的冗余代码
    ---->让类与类之间产生关系,为多态打下基础
    若一个新类继承了原有类的属性和方法,并增加了自己的新属性和新方法,称之为派生类,派生类就继承了原有类;当子类继承父类的时候,子类不继承父类的构造函数,但是子类生成对象时(new Student())默认会先执行父类无参的构造函数(实例化对象,让子类可以使用父类的成员),当父类定义有参构造函数时,无参构造函数就会被干掉,这时子类会报错,解决方案是1>在父类重新定义无参构造函数 2>子类的构造函数:base(),调用有参构造函数,函数体中只需初始化特有属性;如果不想执行父类的构造函数,可以通过参数的不同调用父类一个空的构造函数。

  • 多态
    ----->虚方法 virtual override
    ----->抽象类 abstract override
    ----->接口 interface
    很重要的一个概念,一个接口,多个方法。通过继承实现的不同对象调用相同的方法,进而有不同的行为,实例如下:abstract-override

抽象父类有方法Body(),子类继承父类重写Body方法,new出不同的对象,这些对象去执行相同的Body方法,有不同的执行结果,这就是多态。上述例子中想要停止这种继承重写,用关键字sealed修饰类即可。

面向对象的理解及三大特性总结相关推荐

  1. java 三大特性理解_java 三大特性--封装、继承和多态理解

    java 三大特性--封装.继承和多态理解 封装 /** * 所谓封装,就是将对象具有的成员变量和成员函数包装和隐藏起来,让外界无法直接使用, * 被封装的成员只能通过某些特定的方式才能访问. * 实 ...

  2. 面向对象编程OOP的三大特性

    面向对象的三个基本特征是:封装.继承.多态. 封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类 ...

  3. 面向对象(二)——三大特性(封装、继承、多态)

    一.封装 目的:保护类,让类更加安全. 做法:让类里面的成员变量变为私有(即访问修饰符)的,做相应的方法或者属性去间接的操作成员变量 ※访问修饰符 private 私有的              只 ...

  4. java第五章:面向对象(oop)三大特性之多态

    多态(把代码写活,提高代码的扩展性和可维护性) 生活中的多态:同一种物质,因不同的环境展现不同的形态(水:气态,液态,固态/碳12:金刚石,石墨) 程序中的多态:同一个"接口"因不 ...

  5. Java面向对象三大特性(封装、继承、多态)

    文章目录 前言 一.封装 1. 封装的概念 2. private实现封装 3. getter和setter方法 4.封装的好处 二.继承 1. 继承的概念 2. extends实现继承 3. supe ...

  6. 基础面试题: 面向对象三大特性

    C++或Java.C#等面向对象语言基础面试题 文章目录 前言 一.面向对象三大特性是什么? 二.封装 三.继承 四.多态 总结 前言 计算机语言的发展经历了机器语言.面向过程语言.以及面向对象语言, ...

  7. Java三大特性:封装,继承与多态

    (尊重劳动成果,转载请注明出处:https://blog.csdn.net/qq_25827845/article/details/84592274冷血之心的博客) 目录 (一)封装 封装的定义 封装 ...

  8. Java 并发系列(一):多线程三大特性

    概述 多线程三大特性:原子性.可见性.有序性. 1. 原子性 原子性是指:多个操作作为一个整体,不能被分割与中断,也不能被其他线程干扰.如果被中断与干扰,则会出现数据异常.逻辑异常. 多个操作合并的整 ...

  9. 【总结记录】面向对象设计OOP三大特性(封装、继承、多态)、七大基本原则的理解(结合代码、现实实例理解)

    文章目录 一. 三大特征的理解 (1)封装 (2)继承 (3)多态 (4)面向对象.面向过程的对比 二. 七大基本原则的理解 (1)单一职责原则 (2)开放封闭原则(OOP 核心) (3)里氏替换原则 ...

最新文章

  1. libevent中的缓冲区(二)
  2. WINCE的内存配置
  3. LeetCode OJ - Copy List with Random Pointer
  4. 15岁大学毕业,一生800多篇专著论文,双眼失明却凭一条公式称霸数学界
  5. Android RecyclerView(九)滑动监听综述
  6. php的limit分页,用php数组的array_slice分页和用limit查询分页哪个效率更高?
  7. msdn 上WPF 的学习地址
  8. 大数据_Flink_流式处理_简介_认识一下什么是BI中的ETL---Flink工作笔记0005
  9. 【报告分享】2020中国消费市场发展报告.pdf(附下载链接)
  10. C++STL之fill()函数使用方法
  11. 通过Stratus 服务器在Flash Player中使用RTMFP 开发P2P应用
  12. Codeforces Round #190 (Div. 1): E. Ciel and Gondolas(决策单调性DP+wqs二分)
  13. DSP2812学习笔记-Flash固化操作
  14. 网络正常,QQ无法登录,一直显示登录中
  15. 香港、英国、南非...中国!区块链将迎来又一波高潮?
  16. 数据中心机房建设中的关键问题都有哪些?
  17. com.zxy.android tiny,遇到一个 SIGABRT 这样的错误
  18. mysql优化 个人笔记 (mysql锁机制 ) 非礼勿扰 -m10
  19. c udp文件发送到服务器端,基于UDP的客户端和服务器端的代码设计
  20. Linux之系统管理命令

热门文章

  1. 【渝粤题库】陕西师范大学200691离散数学作业(高起专、高起本、专升本)
  2. 出现 malformed or corrupted AST file: 'Unable to load module .pcm: module file out of date'错误
  3. linux下使用daemontools的supervise让不稳定程序死掉自动马上重启
  4. usb由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备(代码 19)
  5. 芯片里的SOP SSOP TSOP TSSOP有什么区别?
  6. openpyxl读取、更新插入excel
  7. TensorFlow函数总览
  8. 如何绘制业务流程图(二)
  9. 华为OD面试前准备以及对自己得总结
  10. SEO优化常见的几个误区