面向过程

面向过程是一种自顶向下的编程,强调行为过程,可扩展性可维护性差。

  1. 优点:
  2. 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源。
  3. 单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
  4. 缺点:
  5. 没有面向对象易维护、易复用、易扩展。

面向对象

面向对象是将事物高度抽象化,必须先建立抽象模型,之后直接使用模型就行了。

  1. 优点:
  2. 易维护、易复用、易扩展。由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
  3. 缺点:
  4. 性能比面向过程低。

封装

将对象细节隐藏,通过公共方法暴露对象功能。

继承

子类可以直接或间接获得父类成员。

强耦合,父类变更影响子类。

破坏了封装,父类的实现细节对子类透明。

多态

同一个行为具有不同表现形式或形态。

继承、重写、向上转型。

屏蔽不同子类对象之间的实现差异。

重载(overload)

一个类中可以有多个名称相同的方法,方法的参数列表各不相同。

参数类型、参数个数、参数顺序构成重载。

返回值类型不同不构成重载,Java中的调用函数不需要强制赋值。

覆盖(override)

子类对父类方法的一种重写,异常、访问权限都是父类的子集。

覆盖的方法不能是private。

抽象

从特定角度出发从已存在的事物抽取需要的特征、行为的思维方式。

抽象类

可以没有抽象方法,可以有普通成员变量,只能单继承。

接口

必须有抽象方法,只有常量,可以多继承。

JAVA面向过程VS面向对象的更多相关文章

  1. 【JAVA】笔记(2)---面向过程与面向对象;类,对象;实例变量,引用;构造方法;

    面向过程与面向对象: 1.面向过程思想的典型栗子是C语言,C语言实现一个程序的流程是:在主函数中一步一步地罗列代码(定义子函数来罗列也是一样的道理),以此来实现我们想要的效果: 2.面向对象思想的典型 ...

  2. 从面向过程到面向对象再到MVC

    /* * * title: 从面向过程到面向对象再到MVC * author: tanghao * date: 2020.9.30 * version: 1.0 * */ 前言 本文档通过一个显示20 ...

  3. 面向过程 vs 面向对象

    从网上摘录了一些面向过程vs.面向对象的分析,先简单记录如下,稍后会继续整理. 为什么会出现面向对象分析方法? 因为现实世界太复杂多变,面向过程的分析方法无法实现. 面向过程 采用面向过程必须了解整个 ...

  4. JS是面向过程、面向对象还是基于对象?面向对象的代码体现

    一.问题 javascript是面向对象的,还是面向过程的?基于对象是什么意思? 对象: 指的是对某一类事物进行抽象,抽象出这一类事物共同的特征以及行为(也就是属性和方法),那些拥有这一共同属性和方法 ...

  5. python 面向过程和面向对象比较

    面向过程 VS 面向对象 面向过程的程序设计:核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么......面向过程的设计就好比精心设计好一条流水线,是一种机械式的思维方式. 优点是:复杂度 ...

  6. C++笔记005:用面向过程和面向对象方法求解圆形面积

    原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 结束了第一个hello world程序后,我们来用面向过程和面向对象两个方法来求解圆的面积这个问题,以能够更清晰的体会面向对象和面向过程. ...

  7. PHP面向过程和面向对象

    php程序编写分为面向过程和面向对象.两者在功能实现上没有区别,但是在代码编写上区别很大,面向过程的代码很乱,不易管理,而面向对象把常用的功能封装为一个类,这样代码清楚多了. 下面举个小例子说明一下: ...

  8. essential C++中关于面向过程和面向对象的说明

    昨天在阅读essential C++中看到了一个关于面向过程和面向对象的区别的例子,感觉挺好的.记录下来.... 这个例子是关于照相机的.照相机有三个性质,一个是控制位置:通常使用3个浮点数据来表示其 ...

  9. python基础(23):面向过程与面向对象的优劣、初识面向对象

    1. 面向过程与面向对象的优劣 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程 ...

随机推荐

  1. BZOJ1102(搜索)

    随便写一下的搜索,别的OJ深搜就过了,强大的BZOJ成功栈溢出RE了我并使我屈服地用广搜过掉,第一行手动开栈惨遭无视. 广搜: #pragma comment(linker, "/STACK ...

  2. 20 个案例教你在 Java 8 中如何处理日期和时间?

    前言 前面一篇文章写了<SimpleDateFormat 如何安全的使用?>, 里面介绍了 SimpleDateFormat 如何处理日期/时间,以及如何保证线程安全,及其介绍了在 Jav ...

  3. oracle 直接连接到数据库 CMD窗口

    打开cmd 在命令行 中输入如下命令  sqlplus sys/zd****!@60.**.203/orcl as sysdba  就直接连上了

  4. React-redux及异步获取数据20分钟快速入门

    一, 写在前面 1. 前面我写过一个vuex10分钟入门 传送门 2. React-redux网上有好多文档,又臭又长,明明很简单的问题,硬是让新人更晕了~, 我写这个文章的目的是让新人在20分钟之内 ...

  5. Promise/A+规范

    1.什么是Promise? Promise是JS异步编程中的重要概念,异步抽象处理对象,是目前比较流行Javascript异步编程解决方案之一 2.对于几种常见异步编程方案 回调函数 事件监听 发布/ ...

  6. js作用域及对象以及一些常用技巧

    回顾 流程控制(语句) 分支 if () {    }​if () {    } else {    }​if () {    } else if () {    } else if () {     ...

  7. codeforces1025

    hackforces + fstforces A 很明显当有一个字母出现次数>1时即合法 $n = 1$的情况需要特判 #include<cstdio> #include<ve ...

  8. C 函数库 (libc,glibc,uClibc,newlib)

    glibc glibc和libc都是Linux下的C函数库,libc是Linux下的ANSI C的函数库:glibc是Linux下的GUN C的函数库:GNU C是一种ANSI C的扩展实现.ANSI ...

  9. [翻译] API测试的最佳实践 - 介绍

    API测试的最佳实践 - 介绍 在上一篇“是什么让API测试很叼”一文中,我们讨论API与其他形式的软件测试的差异.部分是因为API之间的通信压根就没考虑让你能读懂,纯粹是为了方便计算机之间的交互而设 ...

  10. CloudFoundry命令行和Kubernetes命令行的Restful API消费方式

    先说CloudFoundry的命令行工具CLI.我们在CloudFoundry环境下工作,第一个使用的命令就是cf login. 如果在环境变量里维护CF_TRACE的值为true: 则我们能发现,诸 ...