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修饰符,来向着色器 ...
随机推荐
- js遍历函数
function each(arr, callback, thisp) { if (arr.forEach) {arr.forEach(callback, thisp);} else { for (v ...
- ASP.NET MVC 实现 AJAX 跨域请求
ASP.NET MVC 实现AJAX跨域请求的两种方法 和大家分享下Ajax 跨域的经验,之前也找了好多资料,但是都不行,后来看到个可行的修改了并测试下 果然OK了 希望对大家有所帮助! 通常发送 ...
- Cryptography I 学习笔记 --- 总结
在b站上大概的看完了Dan Boneh的密码学,对现代密码学总算有了一个粗浅的认识. 总算能在纸上手写RSA公式并且证明之了,蛤蛤. 总体的感触就是,现代密码学是一个非常博大精深的体系,我等程序员最重 ...
- Cryptography I 学习笔记 --- 使用分组密码
1. 如果加密算法是确定性的(相同的明文产生相同的密文),那么它对于选择明文攻击是不安全的 2. 随机化加密,每次对相同的密文加密,会产生不同的结果 AES加密模式 ecb:明文分块计算,块与块之间没 ...
- 当前标识(IIS APPPOOL\ASP.NET v4.0)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写访问权限 解决方案
今天搭环境的时候遇到这个问题,折腾了一阵子,最后在微软官方论坛上找到了解决方案. https://forums.asp.net/t/1566987.aspx?Current+Identity+does ...
- NULL的学问
在数据库中存在一种特殊的值:NULL(空值).一个字段如果没有被赋值,那么它的值就是NULL,NULL并不代表没有值而是表示值未知.员工信息表中存储着身份证号.姓名.年龄等信息,其中某条记录中年龄字段 ...
- 模型搭建练习1_用numpy和tensor、variable实现前后向传播、实现激活函数
用numpy实现搭建一个简单的forward和backward import numpy as np N, D_in, H, D_out = 64, 1000, 100, 10 x = np.rand ...
- 审查php.ini自动分析程序
源码 https://github.com/sektioneins/pcc 使用方法 环境: mac cli 命令行执行 git clone https://github.com/sektionein ...
- 【ActiveMQ】消息生产者自动注入报错:Could not autowire. No beans of 'JmsMessagingTemplate' type found
使用ActiveMQ过程中,定义消息生产者: package com.sxd.jms.producer; import org.springframework.beans.factory.annota ...
- Mac Pro 系统自带python路径
/usr/local/Frameworks/Python.framework/Versions/2.7/bin