类与对象

it2025-06-26  4

类与对象简介

面向对象是一种程序的设计方法。

面向过程解决的是当下的需求。

面向对象是模块化设计,对于现在的程序开发更多情况下就像是汽车组装一样,不同情况下就可以形成一辆汽车,并且当某一个零件坏掉的时候还可以进行组装。

在面向对象里面实际上还有许多的特点,归结起来有如下特点:

···封装性:内部的操作对外部而言不可见;

···继承性:在上一辈的基础上继续发展(有了继承性就有了重用性设计);

···多态性:这是一个最为重要的环节,利用多态性才可以得到良好的设计。(可控范围内的状态改变)(需要时间积累)

面向对象开发分为三个阶段:OOA(面向对象分析(需求))、OOD(面向对象设计(功能分析))、OOP(面向对象编程(开发))。

所有的程序的开发原则都离不开实际的生活,如果从程序的开发角度来讲给我们最大的特征:可以进行生活的抽象。

认识类与对象的关系

面向对象的核心所在,也是概念基础。

···类本身属于引用数据类型,所以类的使用上会牵扯到内存的分配问题。

具备共同特征的人有很多,那么自然是一个群体,而群体的一个特征就是整个类的定义的概念,所谓的类描述的就是共性的特征。

任何时候只是依靠共性的特征是无法进行精准的描述的,那么就需要一些个性化的特点。就可以描述一个个独立的事物。所以这样就可以推断出:所谓的类指的就是夜歌共性的概念,而对象指的是一个具体的可以使用的事物。

那么很明显在实际的开发过程之中一定需要首先产生类,而后才可以产生对象。那么对象的所有操作行为都一定在类中进行了完整的定义。类中没有定义的功能,那么对象一定无法使用。

类中的组成:方法(操作的行为)、属性(就是变量,描述每一个对象的具体特点)

类与对象的定义

类与对象的定义与使用

class 类名称{

属性;

属性;

方法(){}//此时的方法不在由主类直接调用,而是要通过对象进行调用。

}

类定义后不能直接去使用的,如果要想使用类那么必须产生对象,而对象的定义有两种方式:

···类名 对象名称 = new 类名称();

···类名 对象名 = null;

对象名 = new 类名();

出现new关键字就是开辟内存(内存是不可能无限开辟的);引用数据类型的最大特征在于内存的分配操作,所谓的性能调优调整的就是内存问题(尽量少使用new关键字)。

所有的对象只有实例化之后才可以真正使用,而对象的使用都是围绕着类进行的。

···调用类中的属性,对象.属性=内容;

···调用类中的方法:对象.方法()

对象的产生分析(内存分析)

对象的产生分析

如果想进行对象的产生分析就必须清楚引用类型,引用类型指的是有一块内存空间的操作。而对于内存主要使用两块内存空间:

···堆内存空间:保存真正的数据,堆内存保存的是对象的属性信息;

···栈内存空间:保存的堆内存的地址,堆内存的所有操作的操作权,可以简化理解为保存的是对象名称;

按照之前的程序,那么现在就可以给出如下的内存参考图:

一个栈内存只能存在一个堆内存地址 ​​

但是千万要记住一点,对象(所有的引用数据类型)必须在类开辟空间之后才可以使用。如果使用了未开辟内存空间的引用数据类型,那么会出现NullPointerException异常。(只有引用数据类型才会出现此异常(数组、类、接口),以后出现了就根据错误的位置观察该对象是否实例化)

引用传递分析

引用传递

初学者最难的部分就是引用传递的分析,以后的开发过程中使用的都是引用传递。

引用的本质就是别名只不过是放在了栈内存之中,即:一块堆内存可以被多个栈内存所指向。

所谓的垃圾指的就是没有任何栈内存指向的堆内存空间,所有的垃圾空间将不定期的被Java中的垃圾收集器(GC)进行回收以实现内存空间的释放,不过从实际开发来讲,虽然java提供的有GC但是GC也会造成性能的下降,所以开发过程之中一定要控制好对象的产生数量,即:无用的对象尽可能少参生。(所有的性能优化从设计到开发要处处体现)

最新回复(0)