您的位置:首页 > 编程语言 > Java开发

Java基础笔记之理解面向对象

2017-05-16 00:13 246 查看
一.Java程序的运行机制:

 1.高级语言的运行机制:计算机高级语言按程序执行方式可分为编译型和解释型两种

  编译型语言是指专门的编译器,针对特定平台(操作系统)将某种高级语言源代码一次性“翻译”成可被该平台硬件执行的机器码,并包装成该平台索能识别的可执行性程序的格式,这个转换过程称之为编译(compile);

  解释型语言是指使用专门的解释器对源代码逐行解释成特定平台的机器码并立即执行的语言。解释型语言通常不会进行整体的编译和连接处理,解释型语言相当于把解释型语言中的编译和解释过程混合到一起同时完成。

 2.Java程序的运行机制和JVM:

   由Java语言编写的程序需要经过编译步骤,但这个编译步骤并不会生成特定平台的机器码,而是生成一种与平台无关的字节码(也就是*.class文件)。这种字节码不是可执行性的,必须使用Java解释器来解释执行。Java程序的执行过程必须经过先编译、后解释。



二.Java程序的基本规则:

 1.Java程序的组织形式:Java程序是一种纯粹的面向对象的程序设计语言,因此Java程序必须以类(class)的形式存在,class市Java程序的最小程序单位。Java程序不允许可执行语句、方法等成分独立存在,所以程序部分必须放在类中定义。

 2.Java源文件的命名规则:Java程序源文件的后缀必须是.java;Java程序源文件的文件名必须与pubic类的类名相同,因此,一个Java源文件里最多只能定义一个public类。

三.内存泄漏和垃圾回收机制:

 1.内存泄漏:如果一些分配出去的内存得不到及时回收,就会引起系统运行速度下降,甚至导致程序瘫痪,这样叫做内存泄漏;

  2.垃圾回收:在c/c++程序中内存回收是靠编程员去释放的。在java程序中内存分配和回收都是由JRE在后台自动进行的,JRE会负责回收那些不在使用的内存,这种机制被称为垃圾回收(Garbage Collection,GC)。java的堆内存是一个运行时数据区,用于保存类的实例(对象),java虚拟机的堆内存中存储着正在运行的应用程序所建立的对象,这些对象不需要程序通过代码来显示地释放。一般来说,堆内存的回收由垃圾回收来负责,所有的JVM实现都有一个由垃圾回收器管理的堆内存。垃圾回收是一种动态存储管理技术,它自动释放不再被程序引用的对象,按照特定的垃圾回收算法来实现内存资源的资源的自动回收功能。

      java中当没有引用变量指向原先分配给某个对象的内存时,该内存便成为垃圾,JVM的一个超级线程会自动释放该内存区。垃圾回收意味着程序不再需要的对象是“垃圾信息”,这些信息将被丢弃。当一个对象不再被引用时,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放没有用的对象外,垃圾回收也可以清除内存块之间的空闲内存区,碎片整理将所占用的堆内存移到的一端,JVM将整理出的内存分配给新的对象。

     垃圾回收机制的特点:

  回收无用对象内存空间,只回收内存资源不能回收物理资源;

  为了更快让不再使用的对象回收,可将该对象的引用变量设为null(代码编码的习惯,内存优化的一部分);

  不可预知性,不知道何时回收但我们通过调用Runtime对象的gc()或System.gc()等方法进行回收;

  精确性,它能精确地标记活着的对象及定位对象之间的引用关系;

  JVM对垃圾回收实现有多种算法实现。

注:当编写java程序时,对于不再需要的对象,不要引用。

三.面向对象的理解及相关概念:

 1.结构化程序设计:按功能把软件系统逐步细分,也称为过程设计。如之前大学所学的C、汇编语言是对硬件方面的细分化的程序设计,在它的设计过程中每个功能都负责对数据进行一次处理,每个功能都接受一些数据处理完之后输出一些数据。其最小的程序单元是函数,每个函数都负责完成一个功能,实现是:接收输入数据->处理输入数据->处理完输出数据



  2.程序的三种基本结构:

     顺序结构:程序中各操作是按照它们在源代码中的排列顺序依次执行的;

     选择结构:程序处理需要根据某个特定的条件选择其中的一个分支执行,有单选择、双选择、多选择三种形式;

     循环结构:程序反复执行某个或某些操作,直到条件为假(或为真)时才停止循环。

  3.面向对象设计:基本思想是使用类、对象、继承、封装、消息等基本概念进行程序设计。其最小的程序单元是类,类可以生成系统中的多个对象,而这些对象则直接映像成客观世界的各种事物。



面向对象的软件系统由多个类组成,类代表了客观世界中具有某种特性的一类事物,这类事物往往有一些内部的状态数据或者记录业务关心的状态数据。

类中封装了成员变量(field)、方法(method)基本格式:

成员变量(状态数据)+方法(行为)=类定义

面向对象的基本特征:

  封装(Encapsulation):将对象的实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能;

 继承(Inheritance):面向对象实现软件复用的重要手段,当子类继承父类后,子类作为一种特殊的父类,将直接获得父类的属性和方法;

 多态(Polynorphism):子类对象可以直接赋给父类变量,但运行时依然表现出子类的行为特征,这意味着同一类型的对象在执行同一个方法时,可能表现出多种行为特征面向对象支持的功能:

   1).对象是面向对象方法中最基本的概念,它的基本特点有:标识唯一性、分类性、多态性、封装性、模块独立性好。

   2).类是具有共同属性、共同方法的一类事物。类是对象的抽象;对象则是类的实例。

   3).对象间互相合作需要一个机制协助进行,这个机制称为“消息”。消息是一个实例与另一个实例之间互相通信的机制。

   4).在面向对象方法中,类之间共享属性和操作的机制称为继承。继承具有传递性。继承可分为单继承(一个继承只允许有一个直接父类,即类等级为树形结构java是只支持单继承)与多继承(一个类允许有多个直接父类C++是支持多继承)。

四.Java面向对象特征:

  java是纯粹的面向对象编程语言,完全支持面向对象的三大基本特征:封装、继承、多态。java程序的组成单位就是类,不管多大的java程序应用程序,都是有一个个类组成的。

  1.一切都是对象:在java语言中,除了8个基本数据类型值之外,一切都是对象,而对象就是面向对象程序设计的中心。对象是任何事物,不仅能表示具体事物还能表示抽象的规则、计划或事件。

    对象具有状态,一个对象用数据值来描述它的状态。java通过为对象定义成员变量来描述对象的状态;对象还有操作,这些操作可以改变对象的状态,对象的操作也被称为对象的行为,java通过为对象定义方法来描述对象的行为;

    对象实现了数据和操作的结合,对象把数据和对数据的操作封装成一个有机的整体,因此面向对象提供了更大的编程粒度,对程序员来说,更易于掌握和使用;

   对象是java程序的核心,所以java里的对象具有唯一性,每个对象都有一个标识来引用它,如某个对象失去了标识,这个对象将变成垃圾,只能等系统垃圾回收机制回收它。java语言不允许直接访问对象,而是通过对对象的引用来操作对象。

  2.类和对象:具有相同或相似性质的一组对象的抽象就是类,类是对一类事物的描述,是抽象的、概念上的定义;对象是实际存在的该类事物的个体,因而也称为实例(instance)。对象的抽象化是类,类的具体化就是对象,也就是说类的实例是对象。

类之间的关系:

  一般->特殊关系:这种关系就是典型的继承关系,这种关系就是“is a”关系‘

  整体->部分结构关系:也称组装结构,这是典型的组合关系。这种关系就是“has a”关系。

在定义了java类之后,就可以使用new关键字来创建指定类的对象了,每个类可以创建任意多个对象,多个对象的成员变量值可以不同---这表现为不同对象的数据存在差异。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java Java基础