一、封装
1. private 关键字
针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作:
- 提供“get变量名0”方法。用于获取成员变量的值,方法用public修饰
- 提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰
2. this 关键字
this修饰的变量用于指代成员变量
- 方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量
- 方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量
什么时候使用this呢?
解决局部变量隐藏成员变量
方法被哪个对象调用,this就代表哪个对象
3. 封装
3.1 封装概述
是面向对象三大特征之一(封装,继承,多态)
是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的
3.2 封装原则
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现隐藏信息的操作和访问成员变量private
提供对应的getXxx()/ setXxx()
方法
3.3 封装好处
通过方法来控制成员变量的操作,提高了代码的安全性
把代码用方法进行封装,提高了代码的复用性
二、构造方法
构造方法是一种特殊的方法
3. 作用:创建对象
4. 功能:主要是完成对象数据的初始化
1.构造方法的注意事项
1.1 构造方法的创建
如果没有定义构造方法,系统将给出一个默认的无参数构造方法
如果定义了构造方法,系统将不再提供默认的构造方法
1.2 构造方法的重载
如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法
1.3 推荐的使用方法
无论是否使用,都手动书写无参数构造方法
2. 标准类制作
- 成员变量
- 使用private修饰 - 构造方法
- 提供一个无参构造方法
- 提供一个带多个参数的构造方法 - 成员方法
- 提供每一个成员变量对应的setXxx()/getXxxx()
- 提供一个显示对象信息的show() - 创建对象并为其成员变量赋值的两种方式
- 无参构造方法创建对象后使用setXxx()赎值
- 使用带参构造方法直接创建带有属性值的对象
三、API(应用程序编程接口)
API(Application Programming Interface):应用程序编程接口
编写一个机器人程序去控制机器人踢足球,程序需要向机器人发出向前跑、向后跑、射门、抢球等各种命令。机器人厂商一定会提供一些用于控制机器人的接口类,这些类中定义好了操作机器人各种动作的方法。其实,这些接口类就是机器人厂商提供给应用程序编程的接口,大家把这些类称为API
Java API: 指的就是JDK中提供的各种功能的Java类
这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的
只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用
注意: 调用方法时,如果方法有明确的返回值,我们用变量接收
String line = sc.nextline();
四、接口
4.1 接口概述
接口就是一种公共的规范标准
,只要符合规范标准,大家都可以通用
Java中的接口更多的体现在对行为的抽象
4.2 接口特点
- 接口用
关键字interface
修饰
publicinterface
接口名 {} - 类实现接口用
implements
表示
public class 类名implements
接口名 {} - 接口不能实例化
接口如何实例化呢?参照多态的方式,通过实现类对象实例化,这叫接口多态。
多态的形式:具体类多态、抽象类多态
、接口多态
- 接口的实现类
要么重写接口中的所有抽象方法
要么是抽象类
4.3 接口的成员特点
-
成员变量
- 只能是常量
- 默认修饰符:public static final
-
构造方法
- 接口没有构造方法,因为接口主要是对行为进行抽象的,是没有具体存在一个类,如果没有父类,默认继承自Object类
-
成员方法
- 只能是抽象方法
- 默认修饰符:public abstract
4.4 类和接口的关系
(1)类和类的关系
继承关系
,只能单继承,但是可以多层继承
(2)类和接口的关系
实现关系
,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
(3)接口和接口的关系
继承关系
,可以单继承,也可以多继承
4.5 抽象类和接口的区别
再次强调:抽象类是对事物的抽象,接口是对行为的抽象
案例:
4.6 形参和返回值
(1)抽象类名作为形参和返回值
- 方法的形参是抽象类名,其实需要的是该抽象类的子类对象
- 方法的返回值是抽象类名,其实返回的是该抽象类的子类对象
(2)接口名作为形参和返回值
- 方法的形参是接口名,其实需要的是该接口的实现类对象
- 方法的返回值是接口名,其实返回的是该接口的实现类