当前位置: 首页 > news >正文

学习java——②面向对象的三大特征

目录

面向对象的三大基本特征

封装

 封装demo

继承

继承demo

多态


面向对象的三大基本特征

        我们说面向对象的开发范式,其实是对现实世界的理解和抽象的方法,那么,具体如何将现实世界抽象成代码呢?这就需要运用到面向对象的三大特性,分别是封装性继承性多态性

封装

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

        简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。

 封装demo

如我们想要定义一个矩形,先定义一个Rectangle类,并其中通过封装的手段放入一些必备数据。

class Rectangle {/*** 设置矩形的长度和宽度*/public Rectangle(int length, int width){this.length=length;this.width=width;}/*** 长度*/private int length;/*** 宽度*/private int width;/*** 获得矩形面积*/public int area(){return this.length*this.width;}
}

 我们通过封装的方式,给"矩形"定义了"长度"和"宽度",这就完成了对现实世界中的"矩形"的抽象的第一步。

继承

        继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

       通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。

继承demo

        我们想要定义一个正方形,因为已经有了矩形,所以我们可以直接继承Rectangle类,因为正方形是长方形的一种特例。

public class Square extends Rectangle {/*** 设置矩形的长度和宽度** @param length*/public Square(int length) {super(length,length);}
}

        现实世界中,"正方形"是"矩形"的特例,或者说正方形是通过矩形派生出来的,这种派生关系,在面向对象中可以用继承来表达。

多态

        所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。

        这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。

        最常见的多态就是将子类传入父类参数中,运行时调用父类方法时通过传入的子类决定具体的内部结构或行为。

        在介绍了面向对象的封装、继承、多态的三个基本特征之后,我们基本掌握了对现实世界抽象的基本方法。 


       当你成功了,怎么说都是对的,因为大家看见你台上的风光、头顶的光环。当你没成功的时候,怎么解释都是错的,因为人们相信眼见为实。所以,请埋头苦干吧,别把时间浪费在解释上,没有委屈就没有成长,没有挫折就没有成功!                            ————《人民日报》

http://www.lryc.cn/news/40164.html

相关文章:

  • 初阶数据结构 - 【单链表】
  • 第五周作业、第一次作业(1.5个小时)、练习一
  • 【正点原子FPGA连载】 第三十三章基于lwip的tftp server实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
  • 蓝桥冲刺31天之316
  • 说一个通俗易懂的PLC工程师岗位要求
  • 今年还能学java么?
  • ajax学习1
  • 一题多解-八数码(万字长文)
  • 九种跨域方式实现原理(完整版)
  • fighting
  • 网络安全日志监控管理
  • 线程池的使用:如何写出高效的多线程程序?
  • React 架构流程概览
  • 【Linux】进程管理之kill、killall、pkill
  • LSTM从入门到精通(形象的图解,详细的代码和注释,完美的数学推导过程)
  • 19.特殊工具与技术
  • 518. 零钱兑换 II ——【Leetcode每日一题】
  • django DRF请求访问频率限制
  • 二分查找创新性总结
  • Java Web 实战 13 - 多线程进阶之 synchronized 原理以及 JUC 问题
  • 【解决】elementui ——tooltip提示在循环中点击一个,同时显示多个的问题!
  • SpringBoot-核心技术篇
  • 2023还有人不知道kubernetes?| 初步理解kubernetes
  • Docker 环境搭建
  • css实现炫酷充电动画
  • 【Effective C++详细总结】第二章 构造/析构/赋值运算
  • webpack基础
  • jQuery《一篇搞定》
  • Spring Cloud学习笔记【负载均衡-Ribbon】
  • 第九章:C语言数据结构与算法初阶之堆