当前位置: 首页 > 图文教程 > Java技术 > Java基础 > java基础:小编浅谈java中的一些编程思想
工作已一年,对于java我想说的太多太多,如同人类的任何语言一样,java为我们提供一种表达思想的方式。只有在考虑“设计”、并非考虑简单的编码时,才能够真正体会到Java的强大。你也有这种想法吗?如果你还没有意识到这些,那么请看完这篇文章。
为了让大家能够充分理解java,下面和大家谈一下java中的一些基本概念与思想!
也许有人会想 “为什么面向对象的编程会在软件开发领域造成如此震憾的影响呢?”
面向对象编程(OOP)具有多方面的吸引力。对管理人员,它实现了更快和更廉价的开发与维护过程。对分析与设计人员,建模处理变得更加简单,能生成清晰、易于维护的设计方案。对程序员,对象模型显得如此高雅和浅显。此外,面向对象工具以及库的巨大威力使编程成为一项更使人愉悦的任务。每个人都可从中获益,至少表面如此。
对于面向对象的理解归纳为一下五点:
(1) 所有东西都是对象。可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。理论上讲,可从要解决的问题身上提出所有概念性的组件,然后在程序中将其表达为一个对象。
(2) 程序是一大堆对象的组合;通过消息传递,各对象知道自己该做些什么。为了向对象发出请求,需向那个对象“发送一条消息”。更具体地讲,可将消息想象为一个调用请求,它调用的是从属于目标对象的一个子例程或函数。
(3) 每个对象都有自己的存储空间,可容纳其他对象。或者说,通过封装现有对象,可制作出新型对象。所以,尽管对象的概念非常简单,但在程序中却可达到任意高的复杂程度。
(4) 每个对象都有一种类型。根据语法,每个对象都是某个“类”的一个“实例”。其中,“类”(Class)是“类型”(Type)的同义词。一个类最重要的特征就是“能将什么消息发给它?”。
(5) 同一类所有对象都能接收相同的消息。这实际是别有含义的一种说法,大家不久便能理解。由于类型为“圆”(Circle)的一个对象也属于类型为“形状”(Shape)的一个对象,所以一个圆完全能接收形状消息。这意味着可让程序代码统一指挥“形状”,令其自动控制所有符合“形状”描述的对象,其中自然包括“圆”。这一特性称为对象的“可替换性”,是OOP最重要的概念之一。
Java的面向对象(OOP)特征体现在封装、继承、多态。然而它的确切理解你是否还犯些小迷糊?接下来按照自己的理解谈谈java的面向对象的特征。
(1)封装是把数据和过程给包围起来,对数据的访问只能通过给定的界面。面向对象计算始于这个基本概念,即现实世界是一个完全自制,封装的对象,这些对象通过一个受保护的接口访问其他对象。
(2)继承是一种层次模型,可以实现类的重用,他提供了一种明确表达共性的方法。一个新类可以从现有的类中继承,这个过程称之为类继承。新类继承了原始类的特性,新类称之为子类,原始类称之为父类。子类可以从他的父类中继承方法和实例变量,并且子类可以覆盖父类中的方法或添加新的方法。子类(派生类)继承父类(基类)的方法和属性。
(3)多态性是指不同的类对象对同一个消息做出响应。多态性包括参数多态和包含多态。多态性语言具有灵活,抽象,行为共享,代码共享的优势,可以解决应用程序的函数重名问题。相同的行为不同的实现方式;(主要体现在方法的重写和重载);
对象的创建和存在时间
从技术角度说,OOP(面向对象程序设计)只是涉及抽象的数据类型、继承以及多形性,但另一些问题也可能显得非常重要。本文章将就这些问题进行探讨。
最重要的问题之一是对象的创建及破坏方式。
对象需要的数据位于哪儿,如何控制对象的“存在时间”呢?针对这个问题,解决的方案是各异其趣的。C++认为程序的执行效率是最重要的一个问题,所以它允许程序员作出选择。为获得最快的运行速度,存储以及存在时间可在编写程序时决定,只需将对象放置在堆栈(有时也叫作自动或定域变量)或者静态存储区域即可。这样便为存储空间的分配和释放提供了一个优先级。某些情况下,这种优先级的控制是非常有价值的。然而,我们同时也牺牲了灵活性,因为在编写程序时,必须知道对象的准确的数量、存在时间、以及类型。如果要解决的是一个较常规的问题,如计算机辅助设计、仓储管理或者空中交通控制,这一方法就显得太局限了。
第二个方法是在一个内存池中动态创建对象,该内存池亦叫“堆”或者“内存堆”。若采用这种方式,除非进入运行期,否则根本不知道到底需要多少个对象,也不知道它们的存在时间有多长,以及准确的类型是什么。这些参数都在程序正式运行时才决定的。若需一个新对象,只需在需要它的时候在内存堆里简单地创建它即可。由于存储空间的管理是运行期间动态进行的,所以在内存堆里分配存储空间的时间比在堆栈里创建的时间长得多(在堆栈里创建存储空间一般只需要一个简单的指令,将堆栈指针向下或向下移动即可)。由于动态创建方法使对象本来就倾向于复杂,所以java中查找存储空间以及释放它所需的额外开销不会为对象的创建造成明显的影响。除此以外,更大的灵活性对于常规编程问题的解决是至关重要的。
评论 (0) All