文章目录

  • 1. 面向对象的概念
  • 2. 面向对象的三个基本特征
    • 2.1 封装
    • 2.2 继承
    • 2.3 多态

1. 面向对象的概念

  • 面向对象是一种符合人类思维习惯的编程思想。现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。
  • 在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象。
  • 提到面向对象,自然会想到面向过程,面向过程就是分析解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候一个一个依次调用就可以了
  • 面向对象则是把解决的问题按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题。
  • 当然,一个应用程序会包含多个对象,通过多个对象的相互配合来实现应用程序的功能,这样当应用程序功能发生变动时,只需要修改个别的对象就可以了,从而使代码更容易得到维护。

2. 面向对象的三个基本特征

2.1 封装

定义: 封装是将客观事物封装成抽象类, 并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

举例:

public class Person{private String name;private int age;private String sex;public String getName(){return name;}public void setName(String name){this.name = name;}private int getAge(){return age;}private void setAge(int age){this.age = age;}public void setSex(String sex){this.sex = sex;}
}

如果没有set()和get()方法,那么Person类应该是这样的:

public class Person {  public String name ;  public int age ;   private String sex;}

需要这样使用它:

Person person = new Person();
person.age = 18;
person.name = "小胖";
person.sex = "男";

封装好处:
(1)如果需要修改Person,比如将sex修改为int类型,几十或者上百个这样的地方需要修改,工作量极大,如果封装了,只需要修改setAge()方法就好了。
(2)针对某些成员变量,不想让其他类知道其值的大小,就可以不去做get()操作,比如Person类中的sex,不想让其他人知道性别,就不做getSex()。
(3)private修饰的成员变量以及成员方法,无法在类外调用,起到了隐藏的作用。

2.2 继承

定义: 继承是从己有的类中派生出的新的类,新的类能够吸收己有类的数据属性和行为,并能扩展新
的属性和行为。关键字(extends)让类与类之间产生继承关系。

举例:

//Dog是子类,Animal是父类
class Dog extends Animal{}

注意: Java中类不支持多继承,单继承可以使继承关系变得简单,一个类只能有一个父类,一
个类可以继承多个接口 接口支持多继承。

2.3 多态

定义: 多态指不同类对象对同一消息做出的响应。

重写和重载:
(1)方法的重写Overriding和重载Overloading都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。

(2)重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。

(3)重载发生在同一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重载对返回类型没有特殊的要求,对访问权限也没有要求。

多态的三个必要条件

(1)继承
在多态中必须存在有继承关系的子类和父类。基于继承的实现机制主要表现在父类和继承该父类的一个或多个子类对某些方法的重写,多个子类对同一方法的重写可以表现出不同的行为。

(2)重写
子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。

(3)向上转型
在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。

JavaSE(二十)——面向对象的概念及三个基本特征相关推荐

  1. 什么是面向对象,它的三个基本特征:封装、继承、多态

    什么是面向对象思想?已经学完了java确不知道如何跟别人解释面向对象是什么意思这很常见.让我们一起来回顾下这个奇思妙想~ 文章目录 一.面向对象与面向过程 1.什么是面向过程? 2.什么是面向对象? ...

  2. JavaSE(二十二)——TCP协议的三次握手

    文章目录 1. TCP协议 2. TCP的三次握手 3. 为什么一定是三次握手? 1. TCP协议 TCP协议:传输控制协议,是可靠连接,类似于打电话,只有等待对方接通的时候才可以交流,也就是确认了对 ...

  3. 二十多岁不信,三十多岁却深信不疑的道理

    1.那些年偷的懒.荒废的时间.败坏的身体,都!得!还! 年轻的时候心比天高,以为自己能干出一番大事业,后来慢慢意识到自己只是个普通人. 2.不和×××讲道理. 3.原来被嗤之以鼻的门当户对是有一定道理 ...

  4. JavaSE(二十六)——多线程之模拟龟兔赛跑

    文章目录 1. 案例说明 2. 代码实现及运行结果 1. 案例说明 (1)首先设定赛道距离,要离终点越来越近 (2)判断比赛是否结束 (3)打印出胜利者 (4)龟兔赛跑开始 (5)故事中是乌龟赢,兔子 ...

  5. JavaSE(二十五)——String与StringBuffer、StringBuilder的区别、创建对象的几种方法、Http和Https的区别

    文章目录 1. String与StringBuffer.StringBuilder的区别 2. Java创建对象的几种方法 3. Http和Https的区别 1. String与StringBuffe ...

  6. JavaSE(二十四)——冒泡排序、选择排序、直接插入排序以及二分查找

    文章目录 1. 冒泡排序 2. 选择排序 3. 直接插入排序 4. 二分查找 1. 冒泡排序 原理:数组元素两两比较,大的往后放,经过一轮比较后,最大元素在最后面,如此往复. 举例说明: 代码: // ...

  7. 二十不惑,三十而已|网易互联网人的“焦虑必杀技”

    今年夏天 电视剧<二十不惑>和<三十而已> 占据了一半以上的热搜和话题 不论是初入社会懵懂的"新人" 还是站在人生节点.三十不易的"老人" ...

  8. 二十不惑PK三十而已:北上广深年薪20、30、40万的程序员的真实生活如何?

    最近<二十不惑>.<三十而已>热播刷屏,所长身边有很多朋友说,"被国产剧给圈粉了",仿佛看到自己的影子. <二十不惑>讲述四个在深圳即将毕业的女 ...

  9. (二十二)岁月无声 - 10

    全体员工到员工餐厅坐定后,老福也随即出现.大家安静下来后,老福一脸虔诚地开始讲话了: "各位同事,今天中午占用大家一点吃午饭的时间,主要是有一件事想向大家宣布.也许这个消息会来得太突然,并且 ...

最新文章

  1. IOS-UITextField-改变光标颜色
  2. jquery ajax html方法吗,jQuery ajax方法
  3. drupal linux安装,在Debian 10(Buster) Linux服务器中安装drupal 8.8.0的说明
  4. unity案例入门(二)(坦克大战)
  5. 通过Source insight查看内核源码
  6. 燧原科技首发国内第二代人工智能训练芯片“邃思2.0”
  7. UVa12034 Race
  8. 锁和并发性----隔离级别
  9. png文件头_Golang GinWeb框架7静态文件/模板渲染
  10. Windows系统修改Docker镜像下载地址
  11. 人工智能:一种现代的方法|课后习题解答
  12. 程序员的自我修养(雾)
  13. ks108x芯片使用体会
  14. costmap_2d 中计算footprint 的内切圆半径和外切圆半径的函数解析——点到线段的距离计算
  15. ATMel的AT89C52芯片慎选
  16. 面试一次问一次,HashMap是该拿下了(二)
  17. mysql原理(1) mysql底层数据结构
  18. 大厂经典高频面试题体系化集合,最强技术实现
  19. 拼多多助农 商业之外的底色
  20. 端午节书法作品楷书内容_端午节书法作品楷书四字柳体

热门文章

  1. sql if else语句_一道sql题学习if语句和case when语句
  2. java model.put_深入理解Java内存模型(一)——基础
  3. matlab平面绘图命令
  4. NOIP2015年普级组试题 金币
  5. linux 设计与实现 pdf,Linux库的设计与实现.pdf
  6. mysql5.7.14操作命令_Mysql5.7.14安装配置方法操作图文教程(密码问题解决办法)
  7. mos 多路模拟电子开关_【原创】单火线智能开关技术介绍及分析
  8. Python蜕变-2017-4-23
  9. ios下微信标题修改
  10. WIndows下AppAche服务中调试php页面出现警告:Call to undefined function mysql_connect()