面对对象的3大特征是:封装、继承和多态

  • 封装

封装就是将客观的事物封装成抽象的类,这个类包含这类事物共同的特性和行为,特性对应类的成员变量,行为对应类的成员方法。并且类可以让自己的成员变量和成员方法让可信的类或者对象访问,不可信的进行信息隐藏。

  • 封装的优点

  1. 提高重用性
  2. 提高安全性
  3. 便于使用
  • 封装的实现

成员变量使用private修饰,同时提供公共的set和get方法。

  • 继承

继承是指这样的一种操作:可以使用原有类的所有功能,并且在不重新编写原有类的情况下修改功能或者新增功能。

通过继承创建的新类称为子类或派生类

被继承的类称为父类或基类或超类

  • 继承的优点

  1. 提高重用性
  2. 易于扩展
  • 继承的实现

使用extends关键字

  • 继承的特点

  1. 子类拥有父类非private修饰的成员变量和方法
  2. 子类可以定义自己的成员变量和方法
  3. 单继承(一个类只能继承一个父类),多重继承(B继承A,C继承B)
  4. 子类可以使用super访问父类的成员

ps:子类在实例化时,子类的构造方法必须首先调用父类的构造方法,否则编译器会在子类的构造方法的第一行调用父类的无参构造方法。

  • 多态

多态就是同一个方法,使用不同的实现,从而进行不同的操作。

  • 实现多态的必要条件

  1. 继承
  2. 重写
  3. 父类的引用指向子类对象

本文参考https://www.fangzhipeng.com/javainterview/2019/02/19/object-factors.html

【JAVA基础篇】面对对象的特征相关推荐

  1. Java基础篇:对象拷贝:clone方法 以及 序列化

    我们知道在Java中存在这个接口Cloneable,实现该接口的类都会具备被拷贝的能力,同时拷贝是在内存中进行,在性能方面比我们直接通过new生成对象来的快,特别是在大对象的生成上,使得性能的提升非常 ...

  2. 【JAVA基础篇】对象初始化过程

    我们都知道,创建对象是由 new关键字调用构造方法 返回类实例(实际上还可以通过反射来创建实例). 例如 : Person jack = new Person(); 这句话到底做了什么事情呢 ? 其实 ...

  3. 菜鸟学习笔记:Java基础篇4(面向对象三大特征)

    菜鸟学习笔记:Java面向对象篇中 继承 概念 方法重写(override) Object类 Super关键字 组合 final关键字补充 封装 访问控制符 多态 继承 概念 继续上一篇的例子: #m ...

  4. 菜鸟学习笔记:Java基础篇5(抽象类与接口、回调函数、内部类)

    菜鸟学习笔记:Java面向对象篇下 抽象类 接口 回调函数 内部类 成员内部类 匿名内部类 抽象类 通过前面知识的学习,抽象类这个概念应该不难理解,但比较容易和后面要说的接口混淆,而且在面试中也比较爱 ...

  5. 菜鸟学习笔记:Java基础篇3(面向对象思想、程序执行过程内存分析、面向对象重要概念)

    菜鸟学习笔记:Java面向对象篇上 Java面向对象的思想 Java程序执行过程内存分析 Java垃圾回收机制 构造方法 方法重载(overload) static关键字 this关键字 Java面向 ...

  6. Android面试题Java基础篇

    Android面试题Java基础篇,由本人整理汇总,后续将继续推出系列篇,如果喜欢请持续关注和推荐,更多精彩内容可以关注微信公众号(Android高级编程):android-tech 系列文章目录: ...

  7. Java基础篇--面向对象(Object Oriented)

    Java基础篇--面向对象(Object Oriented) 1. 面向对象概念 1.1 什么事面向对象 1.2 理解面向对象 1.3 面向对象的特点 1.4 面向对象开发设计特征 2. 类与对象 2 ...

  8. Java基础篇——三大特性(多态)

    这是Java三大特性的最后一篇文章,本篇主要讲解多态的概念和应用.如果是对Java有兴趣的小伙伴可以关注一下,后续会推出一系列的Java基础和进阶的总结(或者说是个人的理解吧!)可以让你学到一些基础但 ...

  9. Java基础篇——类与子类

    1. 什么是类,什么是子类? 类:类是Java程序的基本要素,一个Java应用程序就是由若干个类所构成的.类是Java语言中最重要的"数据类型". 子类:由继承得到的类叫子类. 引 ...

  10. Java基础篇1——变量与数据类型

    Java基础篇1--变量与数据类型 1.标识符命名规则 标识符以由大小写字母.数字.下划线(_)和美元符号($)组成,但是不能以数字开头. 大小写敏感 不能与Java语言的关键字重名 不能和Java类 ...

最新文章

  1. Floating Window 详解
  2. ca服务器证书鉴定计划,Let’s Encrypt 项目计划自动化地提供免费的 CA 证书
  3. 【转】C#调用WebService实例和开发
  4. python内点法_Python_Day_02 str内部方法总结
  5. leetcode 剑指 Offer 03. 数组中重复的数字
  6. 重新编译mysqld_exporter0.10
  7. linux 开发板模拟u盘,ARM-Linux开发 - USB Gadget Storage 制作模拟U盘
  8. JAVA设计模式之工厂模式(简单,工厂,抽象)
  9. Windows自动压缩rar以及根据日期删除脚本
  10. 沟通CTBS,远程接入速度不再是困扰
  11. 解决手机应用安装失败却占内存
  12. 自然语言处理技术的进展和趋势
  13. python爬虫-北京租房可视化分析
  14. lol1.7更新服务器维护,lol12月20日维护公告 v3.0.7.1版本更新内容一览
  15. linux给变量加单引号,grep中加单引号与不加引号的区别
  16. 洛谷 P4147 玉蟾宫
  17. 福特汉姆大学计算机科学专业,Fordham的Computer and Information Science「福特汉姆大学计算机与信息科学系」...
  18. 积极适应大数据时代要求 提升科技化和智能化水平
  19. 自定义控件之Canvas图形绘制基础练习-青春痘笑脸^_^
  20. python 图像变化检测_霍夫变换检测图像直线算法python实现

热门文章

  1. Python 爬取了马蜂窝的出行数据,告诉你这个夏天哪里最值得去!
  2. java 日期数组_Java数组
  3. html传输的数值表示的含义,数字传递游戏的意义与感悟_传数字游戏心得体会
  4. 软件开发中 前台、中台、后台英文_最近处处惹人爱的中台到底是什么
  5. ElasticSearch 文档路由,你的数据到底存在哪一个分片上_06
  6. Zipkin 存储追踪数据至 MySQL
  7. 使用MAT工具分析内存溢出
  8. Visual Studio Code Vue代码片段 总览
  9. IntelliJ IDEA 2019.1 windows找不到文件‘chrome’
  10. c语言中循环结构的作用,C语言中对于循环结构优化的一些入门级方法简介