【JAVA基础指南(四)】快速掌握类和对象 基础篇

快速掌握类和对象

    • 前言
    • [1. 类和对象基础](#1. 类和对象基础)
      • [1.1 什么是面向对象](#1.1 什么是面向对象)
      • [1.2 类和对象](#1.2 类和对象)
      • [1.3 代码演示](#1.3 代码演示)
    • [2. 封装](#2. 封装)
      • [2.1 基本概念](#2.1 基本概念)
      • [2.2 代码示例](#2.2 代码示例)
    • [3. 杂项知识点](#3. 杂项知识点)
      • [3.1 this 关键字](#3.1 this 关键字)
      • [3.2 构造方法](#3.2 构造方法)
    • 结语

🎬 博主名称: 超级苦力怕

🔥 个人专栏: 《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》,一起把基础打牢。
相关推荐
:mnong2 小时前
跟着学伴AI项目设计分析学习安卓APP研发
android·人工智能·学习
可以简单点2 小时前
spring为什么使用三级缓存而不是两级?
java·spring·缓存
每天吃饭的羊2 小时前
Node.js 创建可二次编辑的 HTML 文档并生成文件
开发语言·javascript·ecmascript
海兰2 小时前
使用 Spring AI 打造企业级 RAG 知识库第三部分:企业部署与优化
java·人工智能·spring
web前端神器2 小时前
宝塔服务器网址ERR_CONNECTION_REFUSED报错排查流程
java·linux·服务器
Cat_Rocky2 小时前
创建LNMRP后端技术栈
java·开发语言
刘 大 望2 小时前
RAG相关技术介绍及Spring AI中使用--第二期
java·人工智能·spring·ai·chatgpt·aigc·etl
牛马1112 小时前
Flutter BoxDecoration border 完整用法
开发语言·前端·javascript