- 对象是类的实例: 由类创建的具体实体
在现实世界中具有相同特征和行为的某一种具体事务 比如人: 有姓名、年龄、性别 花: 颜色、气味 楼: 高度、宽度
-
定义一个学生类
作为一个学生具备的特征、行为是什么: 例如: 特征: 姓名、学号、成绩 行为: 学习、睡觉 特征可以理解为类里面的成员属性 行为可以理解为类里面的成员方法 一个类里面可以创建多个不同对象
// 创建一个学生类
public class Student{
// 定义成员属性 也就是学生特征
String name; // 姓名
int age; // 年龄
double score; // 成绩
public void xuexi(){
System.out.println("我是学习");
}
public void shuijiao(){
System.out.shuijiao("我是睡觉");
}
}
-
创建对象
new: 用来创建指定对象 -- 实例化对象(使用指定的类实例化一个具体的对象) 语法: 类名 对象名 = new 类名(); 成员属性/成员方法的调用: 对象名.属性名/方法名 类中的静态方法调用方式: 对象名.静态方法名(); 类名.静态方法名();
-
类的组成
成员属性/实例变量 成员方法 构造方法 常量/静态常量 ...
-
类与对象的关系
类: 定义了对象所具有的特征与行为, 类可以理解为对象的模板 对象: 拥有多个相同特征与行为的实体, 对象是类的实例 面向对象就是从具体到抽象, 再从抽象到具体的一个过程
-
实例变量与局部变量
实例变量: 在类中方法体外声明/定义的变量 有效范围: 在整个类体中有效 有默认值 对象被销毁之后失效 局部变量: 只能声明/定义在方法体中的变量 有效范围: 只在上面最近的开始大括号(在该大括号中)及相应的结束大括号的范围内 没有默认值 方法执行完成后被销毁 同名的变量必须注意其有效范围
-
方法重载
在一个类中出现同名的方法称之为方法重载 要求: 1. 方法名称相同但参数不能相同(参数的个数, 参数的数据类型, 参数的顺序) 2. 返回值与访问控制修饰符无关 方便, 灵活, 屏蔽使用差异
-
构造方法/构造器/构造函数
是类中的一种特殊的方法, 用来创建类的对象(实例化对象) ---主要作用: 给类中的成员属性/实例变量赋值 语法: public 类的名称(参数列表){ } 构造方法不像其它方法的方式去调用
public class Person{
String name;
int age;
public Person(){
}
public Person(String n, int a){
name = n;
age = a;
}
public String say(){
return "name = " + name + ", age = " + age;
}
}
public class TestPerson{
public static void main(String[] args){
// 调用构造方法
Person p = new Person();
System.out.println(p.say());
// name = null, age = 0
// name = 张三, age = 20
}
}
如果类中没有声明构造方法,那么编译器在编译时会自动创建一个无参的构造方法 如果在类中声明了构造方法, 那么编译顺不会再创建无参的构造方法
-
对象创建时的内存分配过程
Person p = new Person("张三", 20); Person p2 = new Person("李四", 21);
- 在内存(堆)中开辟对象空间
- 为成员属性初始化赋值(使用各成员属性相应的数据类型的默认值进行初始化赋值)
- 执行构造方法中的代码(使用参数值进行赋值)
- 将内存中的地址值赋给引用变量
-
this关键字
作用: 表示当前类对象(自己) 1. 区分实例变量与局部变量 -- 如果局部变量与实例变量同名的情况下, 那么在方法中优先使用局部变量 2. 调用本类中的方法 3. 调用本类中构造方法(重载构造方法) 必须写在构造方法中的非注释行第一行 在一个构造方法中只通过this调用一次其它重载的构造方法
今天的分享到这里就结束了: 只有非常努力,才能看起毫不费力



