欢迎各位点赞👍评论✍收藏⭐
目录
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. 小结
以上就是对类和对象的了解,具体还需宝子们去实践,如果觉得该博客对你有用的话,希望一键三连,点个关注不迷路,谢谢支持 !