Java学习之路 第四篇 oop和class (面向对象和类)
本人水平有限,创作本文是为了记录学习和帮助初学者学习,欢迎指正和补充
一.面向对象编程的设计概述
很多同学都在学校学了电脑的编程,现在的书籍大部分都是oop面向对象编程,一个很抽象的的名字,比较难以理解,首先我们从名字开始入手 (老实说我和大家一样,开始的时候也是比较难以理解)
OOP的全称是:Object Orient Programming (Object:对象 Orient:指定方向 Programming: 编程)
所以面向对象编程可以说就是对英文的直译过来的,我们来初步认识下:
1.首先看Object对象,首先想想什么是对象,我看着你,你对我来说就是对象,我对于你来说也是对象,电脑是对象,喝水的水杯是对象,书包也是对象,简单来说对自己能清楚描述的一个具体的形象就可以称为对象,这个对象你很清楚的分别到底是什么就可以理解是对象了,虽然有点拗口 但别放弃看下去,我会尽力说的清楚的。
2.接下来我们看看 Orient :指定方向 ,这个最重要的说明就是指定,因为你看到的某个对象就是你自己给自己指定的方向的对象,稍微理解前面的话,大概就能说明什么是面向对象了(现在估计你还是比较含糊,别担心,往下看)。
3.最后编程Programming这个就不用我说了。
我以个人理解大概解释了面向对象编程的表面意思,为什么说是表面意思,因为说了这么多,你们还是不知道怎么写代码,哈。
1.前面说了这么多,但为什么要进行面向对象编程设计?面向对象的优点在哪呢?
说到这里我就不得不说下早期编程了,不知道现在看这篇文章的你是否写过c语言,写过的话其实就很能理解,c语言中从一个Mian函数中开始从头写到尾直到程序编完,虽然中间夹杂着各个方法,但程序的结构就是由上到下,写下来思路清晰一气呵成,自我感觉完美,但这时如果需求变了需要改变一个功能,这时看着这2万行代码是不是有点头大,有一种牵一发而动全身的感觉,虽然有大神可以写的很完美,但还是有面临这个状况的时候,偶尔会引出奇怪的bug,因为c语言是面向过程的语言。
传统的结构化程序设计是通过设计一系列的过程来解决问题,这个过程也就是算法了,一旦确定了这些过程,就要开始考虑存储数据的方式。这就是Pascal语言的设计者Niklaus Wirth 将其著作命名为《算法+数据结构=程序》的原因,需要注意的是,在Wirth命名的书名中,算法是第一位的,数据结构是第二位的,这就明确的表述了程序员的工作方式。首先要确定如何操作数据,然后再决定如何组织数据,以便数据操作。而OOP却调换了这个次序,将数据放在第一位,然后再考虑操作数据的算法。
---摘抄《Java核心技术 卷1 基础知识》
上面的语言说的很明白,很有水平,清楚的说明了传统编程和OOP编程的区别,但没有说为什么要进行面向对象编程,接下来我就用没有什么水平但很通俗的话来说明一下。首先我在前面说了什么是对象,对对象进行了一系列自我意识的解释,如果你看了上面的话那么就能更好的理解我下面的说明了,现在开始说明比如说一个汽车对象,我们看到它,请问你自己为什么判断它是一辆汽车?如果说你见过所以知道,那么新出的车,你第一眼看到的时候为什么就能判断它是一辆车?因为什么?因为它有四个轮子可以载人在马路上跑,有车窗有车门等等,有了这些判断是不是大概就能判断这是不是一辆汽车了?是的,你有了这些判断,就可以判断一个对象是什么,所以这里就体现出了面向对象的优点,一眼就知道这个对象要干什么能干什么,很清楚很明朗,程序这么设计的话条理会很清晰,而且你想想上面说的C语言改功能的需求,如果你的程序中有好多对象,汽车对象,水杯对象,电脑对象...这时需求要求改一下汽车车身颜色,这时你只要在代码中找到汽车对象进行更改就ok了,是不是很简单,也不会引起bug的产生。如果你认真看了上文现在你理解的应该更深入了一点,但还是不知道怎么写代码,别急,要想写代码还缺一个东西,这个东西就是类(class)。
2.类(Class)
下次再写吧~
Java学习之路 第四篇 oop和class (面向对象和类)的更多相关文章
- Java学习之路【第一篇】:前言
Java 语言概述 一.什么是Java语言 Java语言是美国Sun公司(Stanford University Network),在1995年推出的高级的编程语言.所谓编程语言,是计算机的语言,人们 ...
- Vue学习之路第四篇:v-html指令
上一篇我们讲解了两种方式,把Vue对象的数据展示在页面上: 1.插值表达式 2.v-text指令 但是如果我们展示的数据包含元素标签或者样式,我们想展示标签或样式所定义的属性作用,该怎么进行渲染,比如 ...
- python学习之路网络编程篇(第四篇)
python学习之路网络编程篇(第四篇) 内容待补充
- [转帖]java架构之路-(面试篇)JVM虚拟机面试大全
java架构之路-(面试篇)JVM虚拟机面试大全 https://www.cnblogs.com/cxiaocai/p/11634918.html 下文连接比较多啊,都是我过整理的博客,很多答案都 ...
- 新篇章之我的java学习之路下
昨天写下了人生的第一篇博客,今天接着写我的java学习之路有关开发及框架的学习过程. 想要学好java语言,只学习一些java的基本语法对实际开发中的用处还是不大的,所以我们还要掌握一些有关javaW ...
- java学习之路之javaSE基础1
<h2>java学习之路之javaSE基础1</h2> <div> ###01.01_计算机基础知识(计算机概述)(了解)* A:什么是计算机?计算机在生活中的应用 ...
- Java学习之路(转)
Java学习之路(书籍推荐) 一.基础类 1.<Thinking in java>(阅读2遍),入门第一位是建立正确的概念 2.<Core Java>这本书更贴近实践,更多 ...
- JAVA学习之路与大家分享
这是我四年以前总结的JAVA学习之路,希望对初学者或想从事JAVA开发的人有帮助. 本人是软件工程专业出身,先后学过C.C++.JAVA.VB.delphi等等开发语言以及网络相关管理技术.哎,好久不 ...
- OpenGL学习之路(四)
1 引子 上次读书笔记主要是学习了应用三维坐标变换矩阵对二维的图形进行变换,并附带介绍了GLSL语言的编译.链接相关的知识,之后介绍了GLSL中变量的修饰符,着重介绍了uniform修饰符,来向着色器 ...
随机推荐
- hdu 3518 Boring counting 后缀数组 height分组
题目链接 题意 对于给定的字符串,求有多少个 不重叠的子串 出现次数 \(\geq 2\). 思路 枚举子串长度 \(len\),以此作为分界值来对 \(height\) 值进行划分. 显然,对于每一 ...
- Codeforces 920D Tanks
题目链接 题意 有 \(n\) 个容积无限的水缸,初始时水量为\(a_1,a_2,...,a_n\),有一把容积为\(k\)的勺子,可以从一个水缸中舀水倒入另一个水缸中.问能否给出操作序列,使得最终某 ...
- CentOS下VNC使用
1. 介绍 本文主要介绍了VNC Server的配置和使用 2. 安装 CentOS中默认就有安装VNC,可以通过命令rpm查看 [Jerry@localhost ~]$ rpm -qa | grep ...
- js动态设置根元素的rem方案
方案需求: rem 单位在做移动端的h5开发的时候是最经常使用的单位.为解决自适应的问题,我们需要动态的给文档的根节点添加font-size 值. 使用mediaquery 可以解决这个问题,但是每一 ...
- JWT在PHP使用及问题处理
官网 https://jwt.io/ 3.0版本 https://github.com/lcobucci/jwt 安装 composer require lcobucci/jwt 依赖 PHP 5.5 ...
- POJ 1054 The Troublesome Frog 枚举
这个题分类是dp,想了一会没有想出来,就去看别人题解了.发现别人题解全是暴力枚举= =.复杂度超过 N^2,但可能是剪枝的作用,没有超时. 思路:将所有点按坐标由小到大排序.两两枚举点p1,p2,并判 ...
- OnTouchListener
1.布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android ...
- 屏蔽国内广告的hosts
源码:https://github.com/easonjim/blackhosts bug提交:https://github.com/easonjim/blackhosts/issues
- 【京东账户】——Mysql/PHP/Ajax爬坑之购物车列表分页
一.引言 做京东账户项目中的购物车模块,功能之四就是购物车列表的分页显示.要用到的是Apach环境,Mysql.PHP以及Ajax. 二.查询数据 mysql: SELECT * FROM jd_pr ...
- Linux:和任务执行相关的 【批命令执行 runparts 】命令
run-parts:执行目录下的 命令或脚本 工具,其他非可执行文件和子目录下的文件不会被执行.目录下的命令,是以基本的词汇(字符)顺序执行的,除非你指定了--reverse 逆序选项!这是个老牌的G ...