文档章节

面向对象随笔

王夫子-大猿软件
 王夫子-大猿软件
发布于 2017/08/27 10:49
字数 1537
阅读 3
收藏 1

今天要讲的主题是面向对象,说到对象,很多人在春节期间一定会被相亲,这事再说难眠,尤其是在乡镇农村,更是普遍现象,平时出门在外,只有春节回趟老家,必须在这期间搞事情,不然就要等来年,许多人是等不起的,所以黄金期就在这几天。现实中的对象要搞,java的对象我们也要搞,两个都很重要,话不多说,我们就聊聊面向对象。

 

说到面向对象的语言,java不是第一个,在java之前就有面向对象的语言,比如C++也是面向对象的,java只是面向对象的一员,可是很多人是由java知道的面向对象思想,这和java的普及程度已经优势是密不可分的。我们在学java的时候,书本上描述最多的就是面向对象,如果java书籍没有用大量篇幅来讲述面向对象,那么这本书一定算不上什么好书,面向对象是java里面精髓,虽然很多人用了多年的java,可还没有真正懂得面向对象的妙处,不过这也不影响使用java,就按照别人的代码格式写,套路是一样的,只要程序不出错能用即可。如果大家想要提高自己代码水平,这样做是肯定是不行的,要写好面向对象的代码,就必须对java的面向对象知识有个清晰的认知,比如继承、接口、抽象类、重写、重载、多态和封装等有个很系统的了解,在此基础上,再根据具体的业务逻辑规则搭建自己的代码框架。有人说,代码只要能完成功能没有毛病,不就OK了吗,干么非要花这么大的力气去搞懂这些东西呢,很多人也不清楚这些东西也能写代码呀。关于这个说法,不能说它没有不对,它也有可取之处,就是代码可用就行。但这只能说是前期可行,随着项目的跌倒,代码量的增加,毛病越来越多,缺点就暴露出来了。比如代码不具备可扩展性,或者扩展性比较差,方法代码量大,逻辑混乱,没有清晰的逻辑分类。要解决这些问题,就要对我们的代码重构,将代码变得逻辑清晰,具有一定的可扩展性,这就需要我们使用面向对象的思想为基础,对代码进行合理的优化重构。这是项目迭代过程必经的一道坎,每做一次,都会对面向对象有更深刻的理解。

 

在面向对象的世界里,类是一等公民,有了类才会有对象,对象我们使用new关键字来创建,对象在堆内存中物理空间里,对象都有内存地址,声明变量的值就是对象的内存地址。我们说面向对象,其实就是站在对象的角度来思考程序的组织架构,但我们不能为了面向对象而面向对象,这样是不对的,面向对象的使用是为了提高代码的扩展性,降低代码的维护成本,减少程序的bug,增强创新的稳定性。面向对象的使用,不但是使用new关键字来创建对象这么简单,我们的对象是具有多态性的,比如,有继承关系的类,子类可以以父类的身份出现,也可以以自身出现,这样也会带来方法的重写,经常面试的时候,会问到方法重写方面的问题,当然,接口也存在这样的问题,有了这些的基础,才能是写面向对象代码的前提。新手在学习面向对象的时候,经常会迷途,因为面向对象里的概念以及知识点比较多,很容易混淆也很容易忘记,这些东西其实有工作经验的也会不记得,要时常的去翻看,才会想起,不过随着代码量的增加,自己对这些问题也会有不同的理解,比如很多新手对继承和接口理解不深刻,感觉它们没什么区别,还有人说能用接口就不用抽象类,面向接口编程等一些自己也似懂非懂的话语,这些观点太片面了,新手容易把它当做真理去执行,然而,很多时候,我们遇到的实际情况跟别人是不一样的,那么别人的经验就不能拿来用,我们需要找到适合自己的编程方法。

 

我们在学面向对象的时候,一定要有内存模型的概念,因为,对象都是在堆内存中,有了这种模型概念就很容易的理解对象,以及后面的继承和多态问题,再复杂的对象关系,都可以使用内存模型来分析,画上图,就能很直观的认识到程序的走向,对象的产生、使用以及回收,对象也是有生命周期的,如果创建了对象,没有死亡,随着程序的运行,对象越来越多,那么内存就会溢出的危险,所以java虚拟机有一个神奇的功能就是垃圾回收,一些没有用的对象就会被垃圾回收器机制销毁掉,这样保证了内存的使用率,大大提高了程序的运行效率。所以这也是java安全的原因,我们不需要担心内存泄漏的问题,对象的回收由底层的jvm帮我们搞定,但是这样也不能避免程序的bug,由于bug导致的内存泄漏,jvm是无能为力的,所以写代码的时候也要小心。

© 著作权归作者所有

共有 人打赏支持
王夫子-大猿软件
粉丝 1
博文 17
码字总数 8668
作品 0
南京
程序员
有必要澄清两个基本概念--算法和过程的关系以及关于程序设计方法论的一些看法

概述 前些天,在一个关于面向对象和面向过程的话题, 我的一句评论"算法说白了就是过程"引起了辩论.于是我有了写这篇随笔的想法: 一位园友善意地说这个评论太业余了.我没有为业余二字生气,因为...

mikelij
2008/11/30
0
0
Objective-c类的声明

objective-c 是一种面向对象的编程语言,说到面向对象编程当然离不开类(class)了。 建立了第一个简单的项目后,我们应该继续加深我们对Objective-C语法的认识,我感觉Objective-C是回归C的...

晨曦之光
2012/05/16
307
0
读Clean Code - 数据结构和对象

最近在上下班挤公交的时间细阅Clean Code(代码整洁之道),再次佩服Bob大叔幽默的文笔,独到的观点和理解视角。最让我耳目一新的是Bob大叔对数据结构和对象的解释。 总的说来数据结构指的就...

zting科技
2017/01/10
0
0
F#探险之旅(六):F#代码的组织

前言 是的,我们已经学习了如何在F#中使用各种范式(函数式、命令式、面向对象)进行编程。但是目前还仅限于在单个模块内编写,要知道,不管是采用哪种语言或者范式编程,如果项目规模大了,...

长征3号
2017/12/19
0
0
F#系列随笔索引

循着我的Google笔记本,我看到第一条与F#相关的笔记发生在4月7日,到今天刚好6个月整。 为何要学习F#?这是个首当其冲的问题,跟当初“Java还是C#”这样的问题不同,现在是在学习一门新语言。...

长征3号
2017/12/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Kali Linux Docker 練習

docker pull kalilinux/kali-linux-docker docker run -t -i kalilinux/kali-linux-docker /bin/bash apt-get update apt-get install htop apt-get install nmap apt-get install wpscan ap......

BaiyuanLab
今天
1
0
通俗大白话来理解TCP协议的三次握手和四次分手

最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,就...

onedotdot
今天
2
0
TiDB 在爱奇艺的应用及实践

爱奇艺,中国高品质视频娱乐服务提供者,2010 年 4 月 22 日正式上线,推崇品质、青春、时尚的品牌内涵如今已深入人心,网罗了全球广大的年轻用户群体,积极推动产品、技术、内容、营销等全方...

TiDB
今天
1
0
Web系统大规模并发:电商秒杀与抢购

一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战。如果Web系统不做针对性的优化,会轻而易举地陷入到异常...

xtof
今天
3
0
代码质量管理平台-sonarqube

在工作中,往往开发的时候会不怎么注重代码质量的人很多,存在着很多的漏洞和隐患等问题,sonarqube可以进行代码质量的审核,而且十分的残酷。。。。。接下来我们说下怎么安装 进入官网下载:...

落叶清风
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部