# 第六章 面向对象基础

# 封装

需求:人画圆,请针对这个需求进行面向对象设计

image-20230108215451697

image-20230108215459328

# 封装是什么?

告诉我们,如何正确设计对象的属性和方法

比如: 需求:定义一个类描述人

属性:姓名,年龄

行为:吃饭,睡觉

image-20230108215625552

需求:人画圆,请针对这个需求进行面向对象设计

image-20230108215721146

封装:面向对象三大特征之一

对象代表什么,就会封装对应的数据,并提供数据对应的行为

案例:人关门

image-20230108220351135

# 封装的好处

对象代表什么,就得封装对应的数据,并提供数据对应的行为 降低我们的学习成本,可以少学、少记,或者说压根不用学,不用记对象有哪些方法,有需要时去找就行

# 总结

1.什么是封装?

  • 告诉我们,如何正确设计对象的属性和方法
  • 原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为

2.理解封装思想的好处?

  • 让编程变得很简单,有什么事,找对象,调方法就行。
    • 降低我们的学习成本,可以少学、少记,或者说压根不用学,不用记对象有哪些 方法,有需要时去找就行

# private关键字

案例:

找女朋友的案例
属性:姓名,年龄,性别
调用年龄属性并且赋值18
1
2
3

# private关键字是什么?

是一个权限修饰符

可以修饰成员(成员变量和成员方法)

被private修饰的成员只能在本类中才能访问

那如果说属性被私有化之后,怎么去调用属性呢?

# GetSet方法

针对每一个私有化的成员变量,都要提供get和set方法

get方法:对外提供成员变量的值

set方法:给成员变量赋值

public void setxxx(数据类型 变量){
	
}
1
2
3
public 返回值类型 getxxx(){
	return xxx;
}
1
2
3

# 总结

1.private关键字是一个权限修饰符

2.可以修饰成员(成员变量和成员方法)

3.被private修饰的成员只能在本类中才能访问

4.针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作

5.提供“setXxx(参数)”方法,用于给成员变量赋值,方法用public修饰

6.提供“getXxx()”方法,用于获取成员变量的值,方法用public修饰

# 就近原则和This关键字

# 就近原则

public class GirlFriend{
	private int age;
	public void method(){
		int age = 10;
		System.out.println(age);
	}
}
1
2
3
4
5
6
7

思考一个问题,在这里age会输出什么?

public class GirlFriend{
	private int age;
	public void method(){
		int age = 10;
		System.out.println(this.age);
	}
}
1
2
3
4
5
6
7

谁离我近,我就用谁

# 总结:

1.就近原则

2.this的作用?

可以区别成员变量和局部变量

# 构造方法

构造方法也叫作构造器,构造函数

作用:在创建对象的时候给成员变量进行赋值的

# 构造方法的格式

public class Student{
	修饰符 类名(参数){
		方法体;
	}
}
1
2
3
4
5

特点:

1.方法名与类名相同,大小写也要一致

2.没有返回值类型,连void都没有

3.没有具体的返回值(不能由return带回结果数据)

image-20250225101925769

执行时机:

1.创建对象的时候由虚拟机调用,不能手动调用构造方法

2.每创建一次对象,就会调用一次构造方法

# 构造方法注意事项:

1.构造方法的定义

​ 如果没有定义有参构造方法,系统将给出一个默认的无参构造方法

​ 如果定义了有参构造方法,系统将不再提供默认的无参构造方法

2.构造方法的重载

​ 带参构造方法,和无参构造方法,两者方法名相同,但是参数不同,这叫做构造方法的重载

3.推荐的使用方式

​ 无论是否使用,都需要无参构造方法,和带全部参数的构造方法

# 总结

1.构造方法的作用?

​ 创建对象的时候,由虚拟机自动调用,给成员变量进行初始化的。

2.构造方法有几种,各自的作用是什么?

​ 无参构造方法

​ 有参构造方法

3.构造方法有哪些注意事项?

​ 任何类定义出来,默认就自带了无参数构造器,写不写都有

​ 一旦定义了有参数构造器,无参数构造器就没有了,此时就需要自己写无参数构造器了

# 标准的JavaBean类

1.类名需要见名知意

2.成员变量使用private修饰

3.提供至少两个构造方法

​ 无参构造方法

​ 带全部参数的构造方法

4.成员方法

​ 提供每一个成员变量对应的setXXX()/getXXX()

​ 如果还有其他行为,也需要写上

image-20230307132329399

完成云课构造方法练习

#

# 什么是包?

包就是文件夹,用来管理各种不同功能的Java类,方便后期代码维护

包名的规则:公司域名反写+包的作用,需要全部英文小写,见名知意,比如:cn.lanqiao.day1.demo1

image-20230313093222750

cn.lanqiao.day1.demo1.Employee这个包名也被称为全类名

# 使用其他类的规则

使用其他类时,需要使用全类名

image-20230119004858241

  • 使用同一个包中的类时,不需要导包
  • 使用java.lang包下的类时,不需要导包
  • 其他的情况下都需要导包
  • 如果同时使用两个包中的同名类,需要使用全类名

# 总结

1.包的作用?

​ 包就是文件夹,用来管理各种不同功能的Java类

2.包名书写规则?

​ 公司域名反写+包的作用,需要全部英文小写,见名知意

3.什么是全类名?

​ 包名+类名

4.什么时候需要导包?什么时候不需要导包?

​ 使用同一个包的类时,不需要导包

​ 使用java.lang包中的类时,不需要导包

​ 其他情况都需要导包

​ 如果同时使用两个包中的同名类,需要使用全类名

# 权限修饰符

# 权限修饰符是什么?

是用来控制一个成员能够被访问的范围

可以用来修饰成员变量,方法, 构造方法,内部类

# 权限修饰符的分类

有四种作用范围由小到大(private<default(空着不写,缺省)<protected<public)

image-20230119154323309

简单理解:

private 私房钱,只能自己用

default(缺省) 本包中使用

protected 受保护的

public 公共的

# 权限修饰符的使用规则

实际开发中,一般只用private和public

​ 成员变量私有(private)

​ 方法公开(public)

特例:如果方法中的代码是抽取其他方法中共性代码,这个方法一般也有私有

# 总结练习题

练习题一

请编写一个Java程序,定义一个Student类,该类具有name(姓名)和scores(成绩数组)两个属性。在Student类中,实现一个方法calculateAverageScore(),用于计算学生的平均成绩。然后,在主程序中创建一个Student对象,并为其分配一些成绩,最后调用calculateAverageScore()方法并打印出平均成绩。

练习题二

请编写一个Java程序,定义一个Car类,该类具有brand(品牌)、color(颜色)和wheels(车轮数组)三个属性。在Car类中,实现一个方法checkWheels(),用于检查车轮是否都是完好的(假设车轮数组中存储的是车轮的状态,true表示完好,false表示损坏)。然后,在主程序中创建一个Car对象,并为其分配一些车轮状态,最后调用checkWheels()方法并打印出检查结果

最近更新: 5/20/2025, 2:44:56 PM
失败才是人生的主旋律   |