目录

  • 前言
  • 1 封装思想
    • 封装概述
    • 封装原则
    • 封装好处
  • 2 继承
    • 2.1 继承
    • 2.2 继承的作用
    • 2.3 继承后成员访问规则
    • 2.4 方法重写
    • 2.5 继承的应用
  • 3 多态
    • 多态定义
    • 多态使用的前提条件
    • 方法重写
    • 多态的体现
    • 多态时成员的访问
    • 多态总结

前言

这是我再次学习时候整理的笔记,可能有的地方不准确或者有错误、没有说全,希望各位可以指点出来。

1 封装思想

封装概述

是面向对象三大特征之一(封装,继承,多态)
是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的

封装原则

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
成员变量private,提供对应的getXxx()/setXxx()方法

封装好处

通过方法来控制成员变量的操作,提高了代码的安全性
把代码用方法进行封装,提高了代码的复用性

“封装”通过合并特征和行为来创建新的数据类型。“实现隐藏”则通过将细节“私有化”把接口和实现分离开来。
多态的作用则是消除类型之间的耦合关系。

2 继承

2.1 继承

继承就是子类继承父类的特征和行为,

2.2 继承的作用

通过继承可以快速创建新的类,实现代码的重复利用,提高开发的效率。

2.3 继承后成员访问规则

继承的构造方法调用

  • 创建对象时,调用构造方法,子类会先调用父类的构造方法。(没有父,哪来子)
  • 子类没有构造方法则会默认调用父类的空参构造方法。
  • 可以隐式地实现,也可以用关键字super来实现,super应在方法中的第一行。

父类私有变量调用
因为子类继承父类非私有变量和方法,可以调用父类的私有成员获取方法,来获取父类中的私有变量。

父类变量
子类的静态变量和静态方法会隐藏父类的静态变量和静态方法
子类中如果没有定义同名的变量和方法,则调用父类变量和方法。

super关键字使用
super可以访问父类成员属性,成员方法,构造方法。
super.父类成员变量
super.成员方法名();
super();//父类构造方法

注意:

  • 子类不能选择性继承父类;
  • Java不支持多重继承,但一个类可以实现多个接口,从而克服单继承的缺点;
  • 构造方法不会被子类继承,但可以从子类中调用父类的构造方法。
  • 父类的私有成员子类不能直接调用。

2.4 方法重写

**方法重写:**声明不变,重新实现。子类中出现和父类一样的方法,返回值,方法名,参数列表都相同。这样会将父类方法覆盖,也叫重写。
方法重写后的权限不能比父类方法小,如:父类project方法,子类不能是private。父类是static子类也要是static。

2.5 继承的应用

多态
抽象类

3 多态

多态定义

是指同一行为,对于不同的对象具有多个不同表现形式。

程序中多态: 是指同一方法,对于不同的对象具有不同的实现.

多态使用的前提条件

  • 继承或者实现【二选一】
  • 父类引用指向子类对象【格式体现】 `

例子:

Fu fu = new Zi();

方法重写

  • 方法的重写【意义体现:不重写,无意义】

后期绑定,它的含义就是在运行时根据对象的类型进行绑定。 也叫做动态绑定或运行时绑定。……编译器一直不知道对象的类型,但是方法调用机制能找到正确的方法体,并加以调用。

Java中除了static方法和fianl方法(private方法属于fianl方法)之外,其他所有的方法都是后期绑定。

多态的体现

父类的引用指向它的子类的对象:

父类类型 变量名 = new 子类对象;
变量名.方法名();

父类类型:指子类对象继承的父类类型,或者实现的父接口类型。

多态时成员的访问

成员变量

  • 多态时成员变量的访问特点(向上转型,调用父类成员变量)

    • 编译看左边,运行看左边
      简而言之:多态的情况下,访问的是父类的成员变量

成员方法

  • 多态时成员方法的访问特点

    • 非静态方法:编译看左边,运行看右边
      (编译父类有的方法,执行子类改写的方法,没有改写就调用父类)
      (向上转型)
      简而言之:编译的时候去父类中查找方法,运行的时候去子类中查找方法来执行

静态方法

  • 静态方法:编译看左边,运行看左边
    简而言之:编译的时候去父类中查找方法,运行的时候去父类中查找方法来执行

**注意:**多态的情况下是无法访问子类独有的方法

多态总结

子类向上转型为父类,就成为父类类型,不能访问子类独有方法,访问被重写方法时调用子类重写后的方法,访问静态方法调用父类方法,访问成员变量调用父类变量。这样做的好处就是可以将多个子类转型为父类,调用同一个方法,减少代码的重复。
多态就像是一个马甲,穿上马甲后你就不能使用马甲之外的行为。使用马甲中的行为,如果你有那么就可以用按你的行为来,其他都是马甲的。只要你能穿着马甲,就可以用我这个马甲部落的功能。

Java面向对象三大特征相关推荐

  1. Java面向对象三大特征---继承

    系列文章目录 Java面向对象三大特征-多态 Java面向对象三大特征-封装 文章目录 系列文章目录 前言 一.概念 二.举例说明 三.语句格式 三.为何要使用继承 四.super与this关键字 五 ...

  2. JAVA面向对象三大特征:

    JAVA面向对象三大特征: 1.封装 (英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的 ...

  3. Java面向对象三大特征的理解

    面向对象三大特征的理解 初始理解 封装 继承 多态 初始理解 其实这些知识很早就有接触,而且一些概念也牢记于心了.自己叙述面向对象的特征会是这样的: 面向对象的三大特征是封装.继承和多态.封装是对代码 ...

  4. Java 面向对象三大特征

     面向对象三大特征: 封装性 继承性 多态性 1. 封装性  所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的属性和方法只给特定的对象或其他类进行访问,即使用不同的访问统治权限使类被不同的 ...

  5. java面向对象三大特征及五大原则

    java面向对象 一.java面向对象的三大特征 1.封装(Encapsulation) 封转是指属性私有化 根据需要提供setter和getter方法来访问属性 隐藏具体属性和实现细节,仅对外开放接 ...

  6. Java—面向对象三大特征(封装,继承)

    面向对象的三大特征: 面向对象的三大特征: 封装: 访问修饰符 封装概念 封装的目的 toString方法 Object类(简单提及) 继承: 方法 继承的目的 覆盖 | 重写 super关键字 继承 ...

  7. Java面向对象三大特征:封装、继承、多态

    一.封装   封装这个词听起来好象是将什么东西包裹起来不要别人看见一样,就好象是把东西装进箱子里面,这样别人就不知道箱子里面装的是什么东西了.其实 JAVA 中的封装这个概念也就和这个是差不多的意思. ...

  8. 【职坐标】java面向对象三大特征(一)——封装

    面向对象三大特性之封装篇 什么是封装? 信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一 ...

  9. JAVA面向对象三大特征详解:(封装,继承,多态)

    面向对象语言: 大家经常会听到说JAVA这门语言是面向对象的,但面向对象又是什么呢? 提到面向对象就要引入一个叫做面向过程的概念: 举个例子:把大象装进冰箱,需要几步. 面向过程的做法: 人走到冰箱前 ...

  10. Java面向对象三大特征理解

    1.继承 继承是从已有类得到继承信息创建新类的过程.继承提高代码重用性.关于私有属性,官方文档解释:子类不能继承父类的私有属性,但是如果子类中有公共方法操作父类私有属性,则表现出子类可以使用父类的私有 ...

最新文章

  1. cmake开发环境 linux qt_一步步搭建CMake+QT+VTK+BOOST开发环境
  2. 短信升级为5G消息?三大运营商联合发布的《5G消息白皮书》说了啥?
  3. springboot使用logback日志,部署到tomcat不生效问题解决
  4. seata xid是什么_使用Seata彻底解决Spring Cloud中的分布式事务问题!
  5. 自己调试接口遇到的错误记录
  6. c++,c.c#区别
  7. python人脸识别防小偷_Python人脸识别
  8. 计算机辅助普通话水平测试指导,计算机辅助普通话水平测试指南38563
  9. micropython固件编译_Micropython编译固件的操作步骤
  10. echarts地图下钻可缩放
  11. 360游戏大厅打不开HTML游戏,360游戏大厅打不开怎么办
  12. c++ 将行列式化为上三角行列式,并求值。
  13. 数据库中几个基本概念 主码 外码
  14. attempt doing有吗_Attempt 的用法
  15. 2022暑期实践(Django教程学习记录)(第三周1)P44靓号管理-分页组件封装
  16. mysql用命令修改主键名_MySQL的常用命令:添加外键,修改字段名称,增加字段 设置主键自增长等 落楝花...
  17. bootstrap支持ie8 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
  18. 九章算法面试题81 岛屿的个数
  19. 局域网查看工具Lansee注册码
  20. 如何在Java中创建临时文件?

热门文章

  1. fckeditor for php 下载,PHP_FCKeditor的安装(PHP),1.下载新最版的FCKEditor,解压 2. - phpStudy...
  2. eclipse jad 反编译class文件 插件安装
  3. ExtJS EditorGridPanel 示例之JSON格式Store前后台增删改查
  4. 初识前端模板引擎jade
  5. 微信小程序中使用vue-star
  6. 全美电影票房排行(截止2010.12.19)
  7. 数学建模模板(让你也能写论文的模板)
  8. 2019年7月Github上最热门的Java开源项目
  9. 图片标注工具Labelme使用
  10. 【记得交作业】波波离散实验报告一(python实现)