Java OOP 思想深度刨析

Java面向对象编程

面向对象编程简称OOP(Object——对象、Oriendted——导向的、Programming——程序设计)

面向对象通俗来讲,就是指使用丰富的对象内容进行的程序设计

OOP的引入

在一个项目中,如果在不同的class中存在相同的方法,这样会使得程序编码效率降低,代码冗余复用性变差。所以提出了一种方式,就是用一个class去封装不同class中相同的方法,然后在使用该方法的时候,创建出一个实例去编码,这样一来程序的编码效率就会提高,也不会出现代码冗余的情况。

SP和OOP

面向过程

设计思路:从上到下,层次化,分解

设计方法:程序=算法+数据结构

特点:相互独立,代码冗余,数据和程序不一致,维护较困难

举例:购买商品——咨询价格, 去商店付钱购买

面向对象

设计思路:从下到上,对象化,综合

设计方法:程序=对象=数据+方法

特点:模拟客观世界,与人的思维方式相似,代码干练,数据和程序一致

举例:购买商品——网上找到商品付钱等待快递送上门

两者关系

面向对象是基于面向过程的

对象

对象是OOP的核心部分,是实际存在的具体实体,具有明确定义的状态和行为。

对象就是“数据”和“方法”的封装体,其中:数据表示自身的状态,也称作属性;方法表示自身的功能,也称作函数。

在Java编程中可以说是万物皆对象。

Class

class称之为类,在现实生活中,我们常常生活中的事物划分成类,同一类中的事物具有一些相同的特性,以相同的特性和行为定义实体;在Java中,类是具有相同属性和和行为的一组对象的集合。

类和对象的关系

类是描述事物;对象是所描述事物的实例(使用实例名去访问类中成员)

先有类的描述(class),后有描述类的对象(类名 实例名=new 类名();)

属性

生活中事物的特性在类中使用变量来表示,每个对象的每个属性都拥有其特定的值,对象或实体拥有的特征在类中称为属性 。

方法

事物的行为或动作,在类中用方法表示,每个对象都有其功能和行为,对象每一个功能或行为都是一个方法。

OOP三大特性

封装

将某些东西包装在一起,然后以完整的形式呈现出来

隐藏(private)属性、方法或实现细节的处理方式称为封装

封装本质上就是有选择性地隐藏某些重要信息,很大程度上保证了数据的安全性。

继承

关键字:extends

继承就是重用现有的类来生成新类的一种特征

简单讲就是使得新类具有已有类的一些特性,比如现实中孩子就会具有父母的一些特性

在Java中,继承可实现代码的重用。

多态

多态就是指同一方法在不同类中有不同的实现。

抽象

关键字:abstract

当一个事务中的功能没有具体的方法体时,或者是事物无法描述清楚时,称为抽象;

抽象类不能被实例化(不能创建对象);

子类继承抽象类,必须重写抽象类中所有的抽象方法后,子类才能创建对象;

被abstract修饰的方法,必须包含在抽象类当中。(抽象类当中是可以写普通方法)。

接口

关键字:interface

如果事物遇到扩展的功能,则使用接口来解决,实现接口关键字:implements;

接口中只能定义常量和抽象方法(有固定的修饰符格式);

接口不能被实例化;

实现了接口的子类,必须把接口中的所有抽象方法全部重写后,才可以创建子对象;

接口是为了对事物功能的扩展,但是接口的核心思想就是解决多继承问题,使用接口多实现的方式来代替多继承。

API

指一些预先定义的方法,或指软件系统不同组成部分衔接的约定。用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。


一篇文章带你了解Java OOP思想的更多相关文章

  1. 一篇文章带你掌握主流基础框架——Spring

    一篇文章带你掌握主流基础框架--Spring 这篇文章中我们将会介绍Spring的框架以及本体内容,包括核心容器,注解开发,AOP以及事务等内容 那么简单说明一下Spring的必要性: Spring技 ...

  2. MYSQL(进阶篇)——一篇文章带你深入掌握MYSQL

    MYSQL(进阶篇)--一篇文章带你深入掌握MYSQL 我们在上篇文章中已经学习了MYSQL的基本语法和概念 在这篇文章中我们将讲解底层结构和一些新的语法帮助你更好的运用MYSQL 温馨提醒:该文章大 ...

  3. 一篇文章带你掌握主流数据库框架——MyBatis

    一篇文章带你掌握主流数据库框架--MyBatis MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射. 在之前的文章中我们学习了MYSQL和JDBC,但是这些东西远远不 ...

  4. 一篇文章带你掌握MyBatis简化框架——MyBatisPlus

    一篇文章带你掌握MyBatis简化框架--MyBatisPlus 我们在前面的文章中已经学习了目前开发所需的主流框架 类似于我们所学习的SpringBoot框架用于简化Spring开发,我们的国人大大 ...

  5. 一篇文章带你掌握主流服务层框架——SpringMVC

    一篇文章带你掌握主流服务层框架--SpringMVC 在之前的文章中我们已经学习了Spring的基本内容,SpringMVC隶属于Spring的一部分内容 但由于SpringMVC完全针对于服务层使用 ...

  6. 一篇文章带你掌握主流办公框架——SpringBoot

    一篇文章带你掌握主流办公框架--SpringBoot 在之前的文章中我们已经学习了SSM的全部内容以及相关整合 SSM是Spring的产品,主要用来简化开发,但我们现在所介绍的这款框架--Spring ...

  7. 一篇文章带你了解热门版本控制系统——Git

    一篇文章带你了解热门版本控制系统--Git 这篇文章会介绍到关于版本控制的相关知识以及版本控制神器Git 我们可能在生活中经常会使用GitHub网页去查询一些开源的资源或者项目,GitHub就是基于G ...

  8. 一篇文章带你了解服务器操作系统——Linux简单入门

    一篇文章带你了解服务器操作系统--Linux简单入门 Linux作为服务器的常用操作系统,身为工作人员自然是要有所了解的 在本篇中我们会简单介绍Linux的特点,安装,相关指令使用以及内部程序的安装等 ...

  9. 一篇文章带你了解NoSql数据库——Redis简单入门

    一篇文章带你了解NoSql数据库--Redis简单入门 Redis是一个基于内存的key-value结构数据库 我们会利用其内存存储速度快,读写性能高的特点去完成企业中的一些热门数据的储存信息 在本篇 ...

随机推荐

  1. Vulkan相关资源

    https://github.com/KhronosGroup/Khronosdotorg/blob/master/api/vulkan/resources.md Intel API without ...

  2. 安装与激活PhpStrom

    1.下载安装PHPstorm(https://pan.baidu.com/s/1nwK3ew5 密码dhtr) 2.运行 3.下一步选择中间,在http://idea.lanyus.com/ 上获取激 ...

  3. 20190918-03关机重启命令及修改root密码 000 006

    (1)sync   (功能描述:将数据由内存同步到硬盘中) (2)halt (功能描述:关闭系统,等同于shutdown -h now 和 poweroff) (3)reboot (功能描述:就是重启 ...

  4. leetcode刷题-61旋转链表

    题目 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5->NULL, k = 2输出: 4 ...

  5. VMware虚拟中输入ifconfig提示not found解决办法

    1. 查看虚拟机是否没有IP地址:命令行中输入ip addr,如图红框所示,若无是需要设置. 2. 进入sbin目录确认ifconfig是否安装:可以通过命令[ls | grep 'if']来看 3. ...

  6. 藏在Java数组的背后,你可能忽略的知识点

    目录 引言 概念 区别于C/C++数组 区别于容器 数组特性 随机访问 Java数组与内存 解惑 数组的本质 Java中的数组是对象吗? Java中数组的类型 Java中数组的继承关系 参考资料 引言 ...

  7. First-blog:解决mybatis 用mysql进行模糊搜索时,查不了中文问题

    如图:点击小字 按搜索时,出现乱码搜索不了 解决办法:出现乱码问题,一般无非两种 1.是数据库问题 2.是服务器问题 我在MySQL命令行搜索时,中文可以实现,说明时服务器问题 通过修改 tomcat ...

  8. [LeetCode]64. 最小路径和(DP)

    题目 给定一个无序的整数数组,找到其中最长上升子序列的长度. 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4 ...

  9. Java 审计之SSRF篇

    Java 审计之SSRF篇 0x00 前言 本篇文章来记录一下Java SSRF的审计学习相关内容. 0x01 SSRF漏洞详解 原理: 服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过 ...

  10. k8s报错解决思路

    问题1 1.报错信息如下 [root@ken1 ~]# kubectl get po The connection to the server 192.168.64.11:6443 was refus ...