对象
对象:把一些相关的属性进行统一绑定
对象的模板是通过类来构造的
例如:
一批学生的姓名和身高,就可以通过构造对象来使学生的姓名和身高一一对应起来
面向对象
1)概念层(现实生活中) 万物皆对象
2)逻辑层(存在于开发人员脑海中的世界)
对现实中一类有形或无形的概念的特征抽取
特征表现为属性
对其行为的抽取,表现为方法
对象的职责不同,方法不同
3)物理层
对象在堆区
类的定义、属性的定义
public class Student { String name; int age; }
注:属性定义在类的内部,方法的外部并且没有 static 修饰
关于属性的初始化的语法
默认值规则
默认值为“0”的变形
String类型 => "NULL"
int类型 => 0
boolean类型 => false
构造方法的规则(构造器)
1.构造的方法的名称==类名称
2.没有返回值类型的声明
3.构造器重载:可以定义多个构造器,参数列表的类型不同即可
4.实例化时,根据参数列表选择何时的构造方法调用
public class Person { public String name; public int age; public Person(String name, int age) { this.name = name; this.age = age; } }
实例化
实例化过程:类 -> 对象
语法:
Person p = new Person("小A",173);
通过引用使用指向对象的属性
p.name = ...;
... = p.name;
实例化的三个步骤
1.通过类中的信息,计算对象的内存大小
再由JVM分配内存
把这段内存区域全部初始化为0
2.执行对象的初始化过程
调用初始化函数
3.引用复制
this的作用
1.this是一种引用,类型是当前类
指向当前对象,构造器中的this指向的是当前正在构造的对象
this.name
this.age 属性的全名
2.在一个构造方法中引用其他构造方法
this(...)必须在第一行
变量的三种类型
变量 | 生命周期 | 存放区域 |
局部变量 | 跟着方法走 | 栈帧 > 栈 |
类方法、静态变量、静态属性 | 跟着类的加载、卸载走 | 类 > 方法区 |
实例变量、属性 | 跟着对象实例化、清理走 | 对象 > 堆区 |
普通方法和静态方法
静态方法(类方法)
加static修饰 不能访问属性,不可以使用this
内部不能调用普通方法
调用时,直接调用即可
普通方法(实例方法)
不加static修饰 可以访问属性,可以使用this
内部可以调用普通方法
调用时,必须依赖一个对象(通过引用)的存在
Person p = new Person();
p.sayHello(); 引用 " . " 普通方法()
static的理解
加了static之后,就和类有关,和类的对象无关
反之,不加static,和本类的对象息息相关