Java基础-面向对象-类和对象

Java工程师知识树 / Java基础


类(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 创建对象的方式。

1.使用 new 关键字

这是我们最常见的也是最简单的创建对象的方式,通过这种方式我们还可以调用任意的够赞函数(无参的和有参的)。比如:Student student = new Student();

2.使用 Class 类的 newInstance 方法

这个 newInstance 方法调用无参的构造器创建对象,如:
Student student2 = (Student)Class.forName("根路径.Student").newInstance();
或者:
Student stu = Student.class.newInstance();

3.使用 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 等使用后者的原因。

4.使用 clone 方法

论何时我们调用一个对象的 clone 方法,JVM 就会创建一个新的对象,将前面的对象的内容全部拷贝进去,用 clone 方法创建对象并不会调用任何构造函数。要使用 clone 方法,我们必须先实现 Cloneable 接口并实现其定义的 clone 方法。如:Student stu2 = <Student>stu.clone(); 这也是原型模式的应用。

5.使用反序列化

当我们序列化和反序列化一个对象,JVM 会给我们创建一个单独的对象,在反序列化时,JVM 创建对象并不会调用任何构造函数。为了反序列化一个对象,我们需要让我们的类实现 Serializable 接口。如:
ObjectInputStream in = new ObjectInputStream (new FileInputStream("data.obj"));
Student stu3 = (Student)in.readObject();

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hughjin

动力动力动力动力动力动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值