类和对象
一、类
类中的组成:
- 属性(变量,描述每个对象的具体特点)
- 方法(操作的行为)
类的定义
(修饰符)class 类名称 {
属性1();
属性2();
...
方法1(){};
方法2(){};
...
}
类的设计原则
- 编写类时:类中的所有属性必须用private封装。
- 属性若要被外部访问,必须使用setter、getter方法。
属性的定义
(修饰符) 变量类型 变量名称 ;
方法的定义
(修饰符) 返回值类型 方法名称 ( 形参列表){ 实现 } ;
构造方法的定义
(修饰符) 类名称 (形参列表 ){ };
分析:
- 任何对象都应该有其对应的类,
- 类是对象的蓝图 是⼀个唯⼀的标记,
- 引⽤⼀块堆内存 表示开辟新的堆内存空间
- 构造⽅法:通过以上分析可以得知,所谓的构造⽅法就是使⽤关键字new实例化新对象时来进⾏调⽤的操作⽅法。
对于构造⽅法的定义,也需要遵循以下原则:
- ⽅法名称必须与类名称相同
- 构造⽅法没有返回值类型声明
- 每⼀个类中⼀定⾄少存在⼀个构造⽅法 (没有明确定义,则系统⾃动⽣成⼀个⽆参构造)
二、生产对象的定义
构造对象/对象实例化的语法:
类名称 变量名称 = new 类名称(实参列表);
引用类型-类引用
new 类名称(实参列表);
注意: 只要出现了关键词new,就开辟了空间。
例如:Person per = new Person;
出现了关键字new,表明在堆上分配了内存并且产⽣了Person类的对象per引⽤这部分内存。
注意: 一个文件中只能有一个public的类。
- 计算对象需要的内存大小,开辟空间,初始化为0.
- 调用构造方法,对属性初始化。
- 构造方法调用结束,返回一个指向新对象的引用。
- 对象中存储的最重要的就是属性,也可以找到方法区中对象相对应的类。
如何访问对象的属性、访问对象的方法
1、在类的内部
属性:直接通过属性名称访问即可
方法:直接通过方法名称调用即可
2、在类的外部
属性: 引用.属性名称
方法: 引用.方法名称(实参列表)
三、对象内存分析
- 栈内存(虚拟机局部变量表):存放的是局部变量(包含编译期可知的各种基本数据类型、对象引⽤-即堆内存的地址,可以简单的理解为对象的名称),Java栈是与线程对应起来的,每当创建⼀个线程, JVM就会为这个线程创建⼀个对应的Java栈。
- 堆内存:保存的是真正的数据,即对象的属性信息。
注意::
- 一块栈内存只能保存一块堆内存地址。
- ⼀块堆内存可以被多个栈内存所指向