【JAVA】十、基础知识“类和对象”干货分享~(一)
目录
1. 初识面向对象
2. 类定义和使用
2.1 认识类
2.2 类的定义格式
🔥 注意事项
3. 类的实例化
3.1 什么是实例化?
举例说明
1. 初识面向对象
什么是面向对象呢?在刚开始学习java时我便思考过这个问题,官方的解释是:面向对象(Object-Oriented,简称OO)是一种软件设计和编程范式,其核心思想是通过对现实世界的抽象,将程序组织为一系列相互关联的“对象”(Object)。每个对象代表一个实体或概念,包含数据(属性)和操作数据的方法(行为),并通过消息传递实现交互。
换个说法理解,面向对象就像搭积木:每个积木块都是独立的小世界,自带说明书,能自己干活儿。举个生活例子:
你家洗衣机就是个"对象":
- 属性(内在):容量10kg、白色、滚筒式、某一个品牌
- 方法(功能):开机()、选择各种模式(洗衣模式)、排水()
你不用知道洗衣机的涡轮到底怎么转,但只需按【开始】按钮(封装)进行运转就好
就像现实世界:每个事物都是自带能力的独立个体,我们通过简单的"交互"完成复杂任务,而不是自己处理所有细节。
总结一下:面向对象不是一种语言,而是一种解决问题的方法~
2. 类定义和使用
2.1 认识类
类是用来对一个实体(对象)进行描述的,主要描述该实体(对象)具有哪些本身的属性(比如之前的洗衣机的外观尺寸品牌等等),哪些本身功能(洗衣机各种洗衣模式),在描述完后,计算机就可以识别。
其实Java中的类就像现实世界的“设计图纸”,它是用代码去描述一种事物的一个模板。
2.2 类的定义格式
基础的定义语法格式如下:
举一些简单的例子,对象是一只猫和对象是一部手机:
class Cat {//访问修饰符 + class + 类名(首字母大写)
//成员变量(属性):描述对象的特征
public String name;
public String color;
public int age;
//成员方法(行为):描述对象的行为
public void wag(){// // 无返回值方法用 void
System.out.println(name+"摇尾巴~");
}
public void eat(){
System.out.println(name="吃东西~");
}
}
class Phone{//访问修饰符 + class + 类名(首字母大写)
//成员变量(属性):描述对象的特征
public String color;//手机颜色
public int price;//手机价格
public String functions;//手机功能
//成员方法(行为):描述对象的行为
public void doHomework() {
System.out.println("用手机查资料");
}
}
🔥 注意事项
- 类名首字母必须大写(Cat正确,cat错误)。
- 方法名/变量名首字母小写(驼峰式 doHomework)。
- public修饰的类必须要和文件名相同。
- main方法修饰的类必须要和文件名相同。
3. 类的实例化
3.1 什么是实例化?
类的实例化是指通过类创建具体对象的过程。类本身是一个模板或蓝图,而实例化是根据这个模板创建一个具体的对象,对象会占用内存并可以操作类中定义的属性和方法。
举例说明
1. 定义一个 Person
类
// 定义一个Person类
public class Person {
// 成员变量(属性)
String name; // 姓名
int age; // 年龄
// 构造方法:用于初始化对象
public Person(String name, int age) {
this.name = name; // 使用this关键字区分成员变量和参数
this.age = age;
}
// 成员方法:描述对象的行为
public void introduce() {
System.out.println("大家好,我叫" + name + ",今年" + age + "岁。");
}
}
2. 实例化 Person
类
使用 new
关键字调用构造方法创建对象,具体步骤:
声明对象变量:定义一个变量来引用对象
分配内存:
new
关键字在堆内存中分配空间初始化对象:调用构造方法初始化成员变量
返回引用:将对象的内存地址赋值给变量
public class Main{
public static void main(String[] args) {
// 1. 声明对象变量:person1将引用一个Person对象
Person person1;
// 2. 实例化对象:使用new关键字调用构造方法
person1 = new Person("张三", 25); // 此时对象被创建并初始化
// 3. 访问对象的方法和属性
person1.introduce(); // 此时会输出:大家好,我叫张三,今年25岁。
}
}
也可以将注释中的1和2合并成一行:
public class Main {
public static void main(String[] args) {
// 合并为一行
Person person2 = new Person("李四", 30);
// 3. 访问对象的方法和属性
System.out.println(person2.name); // 此时会直接输出:李四
}
}
可以这样理解:Person person2 = new Person();是通过new关键字,实例化了一个Person对象,person2是一个引用,指向了Person对象。
- 对于上述图的理解:
- person2是局部变量,首先为局部变量在栈上申请了一块内存
- 然后通过new关键字生成的对象在堆上,堆为实例化的对象分配了一块内存
- 对象的地址是0x8
- 用箭头指向的意思是,person2这个引用存储了这个对象的值
- 然后成员属性就会存储于对象当中(如String name;int age)
- 即这个person2指向了这个对象,对象里面有name还有age
- 我们知道name和age是对象的属性,那么如何访问?
- 我们通过对象的引用,来访问对象的属性,即System. out.println(person2 . name);就可以访问对象的name属性,或者是System. out.println(person2 . age);
上述代码中是在Person person2 = new Person("李四", 30);中进行了赋值,也可以改成
Person person2 = new Person(); person2.name = "李四"; System.out.println(person2.name);
- 此时会通过这个点"."也就将李四赋值给了name,此时对象的属性就赋值完了
- person1和person2是一样的,又会有一块地址0x9,又会在堆上开辟一块内存。
- 即每次new一个对象,都会开辟一块内存,通过new关键字可以实例化无数个对象。
最后总结一下
- new关键字用来创建一个对象的实例
- 我们使用 . 来访问对象中的属性和方法
- 同一个类可以创建多个实例(person1,person2)
相信看到这里大家对类有了更好的理解,类是抽象出来的,是根据现实中一个实体抽象出来的,然后这个类要在程序中表现成一个具体的实体,要通过new关键字来实例化成一个程序中的人或者猫之类的。
制作不易,感谢友友们的点赞收藏关注~~如有问题欢迎批评指正,祝友友们生活愉快,学习工作顺顺利利!更多内容加载中~