java 对象导论

1.程序的抽象过程

    任何对编程语言都会提供一种抽象的机制。不同的语言的抽象的层次不一样,比如汇编语言就是对底层机器语言的轻微的抽象,C语言就是对汇编语言的抽象(FORTRAN,BASIC等命令式语言)。这些面向过程的语言虽然在汇编语言的基础上进行了良好的抽象,但是仍然依靠于具体的计算机的结构实现。

    而另外一种方式是只针对待解决的问题建模。将问题空间中的元素及其在解空间中的表示称为“对象”。这种思想的实质是:程序可以通过添加新类型的对象使得自身适用于某个特定的问题。因此面向对象编程(Object-oriented Programming,OOP)允许我们根据问题来描述问题,脱离了具体的解决方案的计算过程。每一个对象都想一个微型的计算机,具有状态,操作,用户可以要求对象执行这些操作。

2.一切都是对象

    虽然java语言是基于C++的,但是相比C++,java是一种更加纯粹的面向对象的程序设计语言。

    Java作为一种面向对象语言。支持以下基本概念:

对象

多态

继承

封装

抽象

实例

方法

消息解析

在此研究对象和类的概念:

    对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。

    :类是一个模板,它描述一类对象的行为和状态。

java中的对象:

    让我们深入了解什么是对象。在我们周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。比如一条狗,它的具有的状态有:名字、品种、颜色,具有的行为有:叫、摇尾巴和跑等。

    对比现实对象和java编程中的对象,它们之间十分相似。编程对象也有状态和行为。编程对象的状态就是属性,行为通过方法体现。在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。

java中的类:

    java中的类可以看成是创建Java对象的模板。

通过下面一个简单的类来理解下Java中类的定义:

语法如下:

class 类名称{

         属性(变量);

         行为(方法);

}

具体的一个范例:

class Person {

    String name ;

    int age ;

    public void tell() {

          System.out.println("姓名:" + name + ",年龄:" + age) ;

         }

}

一个类中可以包含以下类型变量:

    局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。

    成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。

    类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。

 

一个类中可以包含多个方法 :

    在上面的例子中:tell()是类Person的方法。

构造方法:

    每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。

    在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

    下面是一个构造方法示例:

public class Person{

   }

    这个构造方法不进行任何操作,java编译器提供的默认构造方法就是这样。

public Person(String name){

      this.name = name;//这个构造器将参数赋值给对象的name局部变量

}

创建对象:

    对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:

声明:声明一个对象,包括对象名称和对象类型。

实例化:使用关键字new来创建一个对象。

初始化:使用new创建对象时,会调用构造方法初始化对象。

    下面是一个创建对象的例子:

public class Person {

    String name ;

    int age ;

    public void tell() {

          System.out.println("姓名:" + name + ",年龄:" + age) ;

         }

}

public static void main(String []args){

      //下面的语句将创建一个Person对象

      Person person = new Person("张三" );//调用自己编写的构造器

                person.tell;

   }

}

    编译并运行上面的程序,会打印出下面的结果:

姓名:张三,年龄:0

年龄因为未初始化,所以java默认赋值为0;

3.java中对象操作声明:

1.用应用操作对象

     每一种编程语言都有自己的操作内存中元素的方式。java中内存中一切元素都被视为对象,因此采用单一的语法来操作内存中的对象。虽然我们是对对象进行操作,但是实际操作的标识符是对内存中对象的一个“reference”(引用,这个像C语言中的指针操作)。引用与对象的关系就像电视机与遥控器的关系,电视机是一个对象,但是我们不是直接在电视前面去操纵电视机(虽然这样也可以,但是不符合实际),而是使用遥控器来操纵电视机,只要我们拥有了电视机对应的遥控器(也就是对象的引用),我们就能够控制对象,保持与对象的连接。

2.必须由我们来创建每一个对象

      一旦我们创建了一个引用,我们就需要一个新的对象与这个引用配对。通常我们使用一条像

Person person=new Person()

的语句来创建一个对象,将新创建的对象与引用person相关联。(当然java中的基本数据类型是一个特例,这些基本数据类型都有其对应的包装类来对于java的对象机制,暂且不表)

以下是java中的基本数据类型:


java 对象导论_第1张图片

3.永远不需要销毁对象

    虽然我们知道在程序中都有作用域,但是java中,虽然我们知道一个引用在作用域终点之后就消失了,我们再也不能通过这个引用去访问这个对象,但是这个引用还是存在。如果你需要,这个对象可以一直存在直到程序结束。但是java程序运行的过程中并不会因为不停的创建新的对象而导致内存溢出。

    这一次都是java语言的垃圾回收机制的功劳。java有一个垃圾回收器,用来监视程序使用new关键词创造的所有的对象,并区分那些不会被引用的对象进行回收,释放这些内存空间,以便供其他的对象使用。

    所以在java中我们不需要像C语言那样申请空间之后还需要显式的释放空间,这一切都被java虚拟机自动的完成。

你可能感兴趣的:(java 对象导论)