🔥博客主页🔥:【 坊钰_CSDN博客 】
欢迎各位点赞👍评论✍收藏⭐
目录
1, 面向对象认识
1.1 什么时面向对象
1.2 面向对象和面向过程
1.2.1 一个例子理解对象和过程
1. 对于电脑来说
2. 对于我们人来说
2. 类的定义和使用
2.1 简单认识类
2.2 类定义的格式
3. 类的实例化
4. this 引用
5. 对象的构造和初始化
5.1 构造方法
5.2 构造方法重载
5.3 this 调用构造器
6. 默认初始化
7. 小结
1, 面向对象认识
1.1 什么时面向对象
Java 可以说是一门纯面向对象的编程语言(简称 OOP),面向对象是一种思路,依靠对象间的交互来完成一件事情。
1.2 面向对象和面向过程
像 C语言 就是一门面向过程的语言,没有那么抽象,而 Java 则与之相比抽象很多
1.2.1 一个例子理解对象和过程
- 电脑开机
1. 对于电脑来说
电脑内部执行很多步骤------------------> 这就叫面向过程
2. 对于我们人来说
我们只需要简单几步就完成了-----------------------------> 这就叫面向对象
2. 类的定义和使用
2.1 简单认识类
类就是用来对一个对象进行描述的,主要描述对象有哪些属性,那些功能
如:电脑
属性:品牌、尺寸、颜色......
功能:看视频、打游戏......
那么,我们该如何定义类呢?
2.2 类定义的格式
Java 中定义类要用到 class 关键字
class ClassName { //类名称
nature; //属性
method //方法、功能
}
用代码定义电脑类
public class Computer {
public String color; //颜色
public int size; //尺寸
public String function; //性能
public void watchVideo() {
System.out.println("看动画片");
}
public void playGame() {
System.out.println("打游戏");
}
}
这样一个简单的电脑类就定义好了
注意事项
- 类名采用大驼峰命名法
- 属性前用 public 修饰,后续会讲
- 成员方法前不带 static 修饰,后续会讲
3. 类的实例化
那我们定义了一个类后,该如何使用它呢?
这时就要用到类的实例化了,在 Java 中用 new 关键字来进行实例化
//用电脑类来示范
Computer computer = new Computer();
public class Computer {
String color; //颜色
int size; //尺寸
String function; //性能
public void watchVideo() {
System.out.println("看动画片");
}
public void playGame() {
System.out.println("打游戏");
}
public static void main(String[] args) {
Computer computer = new Computer();
computer.watchVideo();
computer.playGame();
}
}
注意事项
- 用 new 关键字创造一个对象的实例
- 使用 . 来访问对象中的属性和方法
- 一个类可创建多个实例对象
4. this 引用
this 是指向当前对象,可通过 this 来访问类中的成员属性,成员方法
我们创建一个时间的类
public class Day {
public int year;
public int month;
public int day;
public void setDay(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
public void dayPrint(){
System.out.println(this.year + " 年 " + this.month + " 月 " + this.day + " 日 ");
}
public static void main(String[] args) {
Day day1 = new Day();
day1.setDay(2024,10,17);
day1.dayPrint();
}
}
当形参的名字和成员属性的名字一样时,用 this 关键字可以指定当前类的成员属性,避免和形参搞混淆
注意事项
- 那个对象调用,this 就是那个对象的引用类型
- this 只能在成员方法发中使用,且只能引用当前对象,不能引用其他对象
- this 是成员方法(除去静态方法)的第一个隐藏的参数,所以才能使用本类的属性和方法
5. 对象的构造和初始化
5.1 构造方法
构造方法可以给成员属性直接初始化
public class Day {
public int year;
public int month;
public int day;
public Day(int year, int month, int day) { //构造方法 或叫 构造器
this.year = year;
this.month = month;
this.day = day;
}
public void dayPrint(){
System.out.println(this.year + " 年 " + this.month + " 月 " + this.day + " 日 ");
}
public static void main(String[] args) {
Day day1 = new Day(2024,10,17); // 直接就地初始化
}
}
注意事项
- 构造方法必须和类名一样
- 构造方法没有返回值,也不能有 void
- 如果不写构造方法,编译器会自动添加一个无参的构造方法
public class Day {
public int year;
public int month;
public int day;
//不写构造方法,编译器会自动添加
//public Day(){} 编译器自动添加的
public void dayPrint(){
System.out.println(this.year + " 年 " + this.month + " 月 " + this.day + " 日 ");
}
public static void main(String[] args) {
Day day1 = new Day(); // 编译器自动添加无参构造器,所以这里不会报错
}
}
- 但是,如果写了有参数的构造器,无参构造器则不会添加
5.2 构造方法重载
public class Day {
public int year;
public int month;
public int day;
public Day(int year, int month, int day) { //构造方法 或叫 构造器
this.year = year;
this.month = month;
this.day = day;
}
public Day(int month, int day) {
this.month = month;
this.day = day;
}
public void dayPrint(){
System.out.println(this.year + " 年 " + this.month + " 月 " + this.day + " 日 ");
}
public static void main(String[] args) {
Day day1 = new Day(2024,10,17); // 直接就地初始化
Day day2 = new Day(10,17); // 直接就地初始化
}
}
- 有多个标签(参数列表)不同的构造方法,就构成了构造方法的重载
5.3 this 调用构造器
this 关键字除了,调用成员属性和方法外,还可以调用构造方法
public class Day {
public int year;
public int month;
public int day;
public Day() {
this(2024,10,17); //必须放在第一行,否则会报错
}
public Day(int year, int month, int day) { //构造方法 或叫 构造器
this.year = year;
this.month = month;
this.day = day;
}
public void dayPrint(){
System.out.println(this.year + " 年 " + this.month + " 月 " + this.day + " 日 ");
}
public static void main(String[] args) {
Day day1 = new Day(2024,10,17); // 直接就地初始化
Day day2 = new Day(); // 直接就地初始化
}
}
注意事项
- this 关键字调用构造方法时,代码必须放在第一行
- 不能形成环(互相调用)
public class Day {
public int year;
public int month;
public int day;
public Day() {
this(2024,10,17); //必须放在第一行,否则会报错
}
public Day(int year, int month, int day) {
this(); //这里会报错
this.year = year;
this.month = month;
this.day = day;
}
public void dayPrint(){
System.out.println(this.year + " 年 " + this.month + " 月 " + this.day + " 日 ");
}
public static void main(String[] args) {
Day day1 = new Day(2024,10,17); // 直接就地初始化
Day day2 = new Day(); // 直接就地初始化
}
}
- 上述代码会报错,不能够形成环
6. 默认初始化
当我们类建立好之后,如果不给成员变量初始化,那他们有默认的初始化值
public class Day {
byte a;
char b;
short c;
int d;
long e;
boolean f;
float g;
double h;
String i;
public static void main(String[] args) {
Day day = new Day();
System.out.println("byte = " + day.a);
System.out.println("char = " + day.b);
System.out.println("short = " + day.c);
System.out.println("int = " + day.d);
System.out.println("long = " + day.e);
System.out.println("boolean = " + day.f);
System.out.println("float = " + day.g);
System.out.println("double = " + day.h);
System.out.println("String = " + day.i);
}
}
默认值图解如下
7. 小结
以上就是对类和对象的了解,具体还需宝子们去实践,如果觉得该博客对你有用的话,希望一键三连,点个关注不迷路,谢谢支持 !