2.1类与对象的基本概念
-
类
类是具有相同特性(数据元素)和行为(功能)的对象的抽象。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来 类映射的每一个对象都具有这些数据和操作方法,类的继承具有层次性和结构性,高层次对象封装复杂行为,具体细节对该层次知识保持透明,可以减小问题求解的复杂度。
-
对象
对象的含义是指具体的某一个事物,即在现实生活中能够看得见摸得着的事物。在面向对象程序设计中,对象所指的是计算机系统中的某一个成分。在面向对象程序设计中,对象包含两个含义,其中一个是数据,另外一个是动作。对象则是数据和动作的结合体。对象不仅能够进行操作,同时还能够及时记录下操作结果。面向对象是相对于面向过程来讲的,面向对象方法面向对象,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式
类是一种抽象的数据类型,它是对某一类事物的整体描述/定义,但是并不能代表某一个具体的事物
对象是抽象概念的具体实例
2.2类与对象的基本定义
类是由属性和方法组成的
类的基本语法:
```
class 类名称{ 数据名称 属性(变量); ...
public 返回值的数据类型 方法名称(参数1,参数2...){ 程序语句; [return 表达式;] }
} ```
如果由对象调用的方法定义不加static,如果不是由对象调用的方法才加上static.
声明并实例化对象,格式:
类名称 对象名称=new 类名称();
分布完成,格式:
声明对象: 类名称 对象名称=null; 实例化对象: 对象名称=new 类名称();
因为类属于引用数据类型,而引用数据类型和基本数据类型最大的不同在于需要内存的开辟及使用,所以关键字new的主要功能就是开辟内存空间,即只要是引用数据类型想使用,就必须使用new 关键字来开辟空间
当一个对象实例化之后就可以按照以下方式利用对象来操作类的结构:
-
对象.属性:表示要操作类中的属性内容
-
对象.方法():表示要调用类的方法
类本身属于引用类型数据,而对于引用数据类型的执行分析就必须结合内存操作来看。下面给出两块内存空间的概念:
-
堆内存:保存每一个对象的属性内容,堆内存需要用关键字new来开辟,如果一个对象没有对应的堆内存指向,将无法使用(保存对象的真正数据,都是每一个对象的属性内容)
-
栈内存:保存是一块堆内存的地址数值,可以把它相象成一个Int型变量(每一个Int型变量只能存放一个数值),所以每一块栈内存只能保留一个堆内存地址(保存的是一块堆内存的空间地址,但是为了方便理解,可以简单地将栈内存中保留的数据理解为对象的名称)
注 :只要看见了关键字new,不管何种情况下,都表示要开辟新的堆内存空间
-
2.3引用数据的初步分析
引用传递是整个Java中的精髓所在,而引用传递的核心概率也只有一点:一块堆内存空间(保存对象的属性信息)可以同时被多个栈内存共同指向,则每一个栈内存都可以修改同一块堆内存空间的属性值
注:每一次使用关键字new都一定会开辟新的堆内存空间,所以如果在代码里面声明两个对象,并且使用new关键字分别对对象进行实例化操作,那么一定是各自占有各自的堆内存空间,并且不会互相影响
在引用的操作过程中,一块堆内存可以同时被多个栈内存所指向,但是反过来,一块栈内存只能保存一块堆内存的地址
public class TestDemo{ public static void mian(String args[]){ Book bookA=new book(); Book bookB=new book(); bookA.title="Java开发"; bookA.price=89.8; bookB.title="JSP开发"; bookB.price=69.8; bookB=bookA; bookB.price=100.1; bookA.getInfo(); } }