类
类(class)是Java 语言的最小编程单位,也是设计和实现Java 程序的基础。
类的概念
类是一组事物共有特征和功能的描述。
解释:类是对于一组事物的总体描述,是按照面向对象技术进行设计时最小的单位,也是组成项目的最基本的模块。类的概念是抽象的,类似于建筑设计中的图纸,是对于现实需要代表的具体内容的抽象。类只包含框架结构,而不包含具体的数据。所以类代表的是总体,而不代表某个特定的个体。
总结:类是抽象的,对象是具体的,实实在在的!
//类的定义:
[修饰符] class 类名{
1~n个构造方法;
0~n个字段;
0~n个方法
}
定义类,其实就是定义类里面的对象
对象
万物皆对象
对象包含:(通过类来描述对象)
- 状态;(成员变量)
- 功能、行为;(方法)
使用new方式创建对象的过程
当执行Point myPoint = new Point(12,34)
这条代码时会顺序执行如下的几步.
第一、执行Point myPoint
。在栈当中生成一个引用型变量的空间 mypoint,注意这时并没有生成任何对象.
第二、执行new Point(12,34)
首先在堆当中为Point 型的无名对象开辟空间;
之后将对象当中的成员变量进行初始化;
最后调用Point 类的构造函数.
第三、将这个创建好的对象的引用赋给 myPoint.
创建对象的方式
我们总是讨论没有对象就去 new 一个对象,创建对象的方式在我这里变成了根深蒂固的 new 方式创建,但是其实创建对象的方式还是有很多种的,不单单有 new 方式创建对象,还有使用反射机制创建对象,使用 clone 方法去创建对象,通过序列化和反序列化的方式去创建对象。这里就总结一下创建对象的几种方式,来好好学习一下 java 创建对象的方式。
使用 new 关键字
这是我们最常见的也是最简单的创建对象的方式,通过这种方式我们还可以调用任意的够赞函数(无参的和有参的)。比如:Student student = new Student();
使用 Class 类的 newInstance 方法
这个 newInstance 方法调用无参的构造器创建对象,如:
Student student2 = (Student)Class.forName("根路径.Student").newInstance();
或者:
Student stu = Student.class.newInstance();
使用 Constructor 类的 newInstance 方法
本方法和 Class 类的 newInstance 方法很像,java.lang.relect.Constructor
类里也有一个 newInstance 方法可以创建对象。我们可以通过这个 newInstance 方法调用有参数的和私有的构造函数。如:Constructor<Student> constructor = Student.class.getInstance();
Student stu = constructor.newInstance();
这两种 newInstance 的方法就是大家所说的反射,事实上 Class 的 newInstance 方法内部调用 Constructor 的 newInstance 方法。这也是众多框架 Spring、Hibernate、Struts 等使用后者的原因。
使用 clone 方法
论何时我们调用一个对象的 clone 方法,JVM 就会创建一个新的对象,将前面的对象的内容全部拷贝进去,用 clone 方法创建对象并不会调用任何构造函数。要使用 clone 方法,我们必须先实现 Cloneable 接口并实现其定义的 clone 方法。如:Student stu2 = <Student>stu.clone();
这也是原型模式的应用。
使用反序列化
当我们序列化和反序列化一个对象,JVM 会给我们创建一个单独的对象,在反序列化时,JVM 创建对象并不会调用任何构造函数。为了反序列化一个对象,我们需要让我们的类实现 Serializable 接口。如:
ObjectInputStream in = new ObjectInputStream (new FileInputStream("data.obj"));
Student stu3 = (Student)in.readObject();
网友评论