快速掌握类和对象

🎬 博主名称: 超级苦力怕
🔥 个人专栏: 《AI 工具使用目录》 《JAVASE》
🚀 每一次思考都是突破的前奏,每一次复盘都是精进的开始!
前言
本文主要内容:面向对象的概念、类和对象的基本知识、面向对象中的数据安全问题、this关键字、构造方法。
1. 类和对象基础
1.1 什么是面向对象
- 对象:把相关的数据 和方法 组织为一个整体来看待
- 面向对象:一种编程思想,它鼓励我们通过操作对象来解决问题,而不是直接操作分散的数据和函数。
快速理解 :我们可以把钢笔、尺子等学习用品统一放进一个文具袋里。这里钢笔、尺子是数据,写字、画线是方法,文具袋就是一个对象。以文具袋这样的整体为单位进行管理和使用,就是面向对象的思维。
1.2 类和对象
- 类:对一类事物的抽象描述,它定义了该类事物具有的属性和行为,但不能指代某个具体的物品(对象)。类的作用是让同一类事物的结构保持一致。
快速理解 :类就像一张设计蓝图。例如"汽车"类,上面规定了汽车应有方向盘、轮胎、引擎,以及启动、加速等功能。而对象就是根据这张蓝图制造出来的真实汽车,比如邻居家的红色轿车或街上的白色SUV。每辆车有自己的颜色、车牌号 ,但它们都具备方向盘和启动能力,因为它们都源自同一张蓝图。

1.3 代码演示
描述一类事物的类叫Javabean类,例如下述的Dog类,可以写属性和行为,在类中的行为不需要static.
java
public class Dog {
String name;
int age;
double weight;
String color;
public void eat(){
System.out.println("狗在吃饭")
}
}
带有main的类叫做测试类,代码需要在测试类中进行使用。
java
public static void main(String[] args) {
Dog d = new Dog();
d.name = "小白";
d.age = 2;
d.weight = 3;
d.color = "白";
d.eat();
}
new:创建一个空间
Dog:管理狗的信息,对应 Dog 类
d:空间的名字
d.xxx:代表对该空间的对应属性
d.xxx():代表调用对象的行为(方法)
2. 封装
我们可以给狗设置为-5岁,这显然不符合常识,为了保证年龄不能为负数,我们可以在每次设置年龄的地方使用if循环,但多个地方都是用的话,修改起来很麻烦,因此使用了封装 ,通过将年龄必须大于零封装到类本身,就不需要再调用了。
2.1 基本概念
- 封装:把数据和对数据的操作"打包在一起",由类自己保护数据。
- private:一种权限修饰符,可以修饰成员变量和成员方法。
- 成员变量和成员方法是类中的数据和行为。
- 被private修饰,只能在本类中才能访问,外界无法访问。
- set和get方法:实际上是类的行为,通过调用类的行为去改变自身的属性。
快速理解:就像类管理对象的属性,使用了"变量"的形式,类管理属性的赋值就使用了"方法"的形式,这样之后改变相关业务,只需要修改当前类即可,大大降低了代码之间相互依赖的程度。
2.2 代码示例
我们需要通过 private 修饰变量(私有化成员变量),用set/get方法赋值/获取属性。
java
public class Dog{
private int age;
public void setAge(int num){
if(num >= 0 && num <=15){
num = age;
}else{
System.out.println("不合理")
}
}
public void getAge(){
return age;
}
}
因为进行了封装,无法直接赋值,需要通过调用类的set/get方法,进行赋值/获取
java
Dog d = new Dog();
d.setName("小白")
d.setAge(10);
3. 杂项知识点
3.1 this 关键字
作用:this 代表当前对象自己,常用于区分成员变量和局部变量。
成员变量 :类的变量
局部变量:常指较小范围的变量,这里指方法中的参数(变量)
使用示例:
我们为了更直观的看懂代码,会将变量也设置为 age,但是这样的话就出现了两个 age,会遵循"就近原则",即两个 age 都会代表局部变量,相当于 age 赋值给了 age ,无意义。
java
public class Dog{
private int age; //成员变量
public void setAge(int age){ //局部变量
//age = num
age=age;
}
}
用 this.age 就能明确地表示"当前对象的成员变量",从而与局部变量 age 区分开。
java
public class Dog{
private int age;
public void setAge(int age){
//age = num
this.age=age;
}
}
快速理解:这里的 this 实际上指的是当前对象,例如我根据 Dog 类创建 BigDog 对象,那么当 BigDog 调用方法时,this.age 实际上对应着 BigDog.age,从而正常赋值
3.2 构造方法
概述 :构造方法也叫构造器、构造函数。
作用:在创建对象的时候给成员变量进行初始化。
使用示例 :
一般我们会在类中创建无参构造方法 和带全部参数的构造方法。
java
public class Dog{
private String name;
private int age;
public Dog(){
//无参构造方法,当创建新的对象,无任何参数的时候执行。
}
public Dog(String name,int age){
//带全部参数的构造方法,当创建新的对象,包含全部参数的时候自动赋值。
this.name = name;
this.age = age;
}
}
特点:
- 方法名与类名相同,包括大小写
- 没有返回值类型,连void也没有,不能由 return 带回返回数据
执行时机
- 创建对象的时候由虚拟机调用,不能手动调用构造方法
- 每创建一次对象,就会自动调用一次构造方法
拓充(了解):
- 如果没有定义构造方法,编译器会给出一个默认的无参构造方法
- 如果写了任意构造方法,编译器不会提供默认的构造方法
- 无参构造和有参构造方法名相同,但是参数不同,叫做构造方法的重载
结语
- 类是对象的模板,定义了对象的属性(成员变量)和行为(成员方法)。
- 对象是类的具体实例,通过 new 关键字创建。
- 封装通过 private 隐藏内部细节,并通过 set/get 方法提供安全的访问方式,降低了代码耦合,提高了可维护性。
- 如果本文对你有帮助:欢迎点赞、收藏,让更多正在学 Java 的同学看到。
- 遇到问题或有不同理解:可以在评论区留言,一起讨论、互相学习。
- 想系统看更多内容:可以关注专栏《JavaSE》,一起把基础打牢。
