Java类与对象的一些想法

来源:互联网 发布:网络营销推广软件 编辑:程序博客网 时间:2024/06/06 11:35

今天我就Java类与Java对象的区别,我这边简单说一下我个人的感受吧.

       我们使用各种idea编写出来的'.Java'文件我们称之为一个Java类,我想你从来没有听说过有人叫它Java对象吧?顾名思义,类就是对一类事物或者一类对象的一个归类或者说划分.我们甚至可以说,'类'只是一个形容词,而'对象'就是这个形容词所形容的其中一个'实体对象'.(当然这么说可能不是很确切,为了便于理解).Java类中定义了很多构造方法,让我们在进行对象的实例化的时候可以有不同的选择.当然实例化出来的对象也就有所不同,这其中的差异由我们实例化的时候所使用的构造方法决定.我们程序运行时使用的是实实在在的存在的对象!(更确切的说是指向对象的句柄)而Java程序在运行前会对我们定义的Java类进行'装载-链接-初始化',以便我们后面对这个类的使用(实例化)做一些准备工作.

      当然,我上面说'Java类只是一个形容词'以及'Java程序在运行时使用的是实体对象'这其实是一个并不是非常准确的说法,因为我们都知道Java里面有一个关键字 'static',大家都知道被static所修饰的变量或者方法,在使用的时候是不需要实例化对象的.只需使用类名+变量名/方法名即可.

      另外,关于static我想做以下一些说明.

 一个Java类其中包含以下几个模块:

1.成员变量

        2.构造器

        3.成员方法(成员方法里面可能还会包含成员变量)

      我上面说了,被static关键字所修饰的变量或者方法是归属于类的,而非这个类的实例对象.没有被static修饰的对象或者方法均归属于类对象.所以,这就涉及到一个对象的使用问题?
static方法里面能否调用非static对象,非static方法能否使用static对象?我上面说了,static对象/方法归属于当前类,非static对象/方法归属于当前’对象’,对象是类的一份子,当然是可以使用static对象,反过来则不行(非static对象的调用必须是类的实例化对象,这就涉及到构造方法在构造对象的时候对对象的一些初始赋值工作,当然也包括static对象和非static对象);这里有些绕口,自己慢慢细细想想即能明白
这里的理解其实涉及到Java的初始化过程,这里我就不多赘述:
     1. 编译器初始化所有的已分配的空间为二进制0
     2. 执行父类静态代码 执行子类静态代码(在执行静态代码之前会对静态对象进行初始化工作)
     3. 初始化父类成员变量
     4. 初始化父类构造函数
     5. 初始化子类成员变量
     6. 初始化子类构造函数

0 0
原创粉丝点击