1、封装
封装概述
是面向对象三大特征之一(封装,继承,多态)
是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的
封装原则
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
封装好处
1.通过方法来控制成员变量的操作,提高了代码的安全性
2.把代码用方法进行封装,提高了代码的复用性
private关键字
private是一个权限修饰符,代表最小权限。
可以修饰成员变量和成员方法,被private修饰后的成员变量和成员方法,只在本类中才能访问。
为什么要对属性进行封装
通过对象名直接访问成员变量的方式来对属性赋值,会存在数据安全隐患。
解决方式: 不让外界直接访问成员变量(也就是要对属性进行封装)
对属性封装的步骤
1. 使用private修饰成员变量
2. 对需要访问的成员变量,提供对应的 get 方法(获取属性的值) 、 set 方法(给属性赋值)。
this的含义和使用
this代表当前调用方法的引用,哪个对象调用this所在的方法,this就代表哪一个对象
this关键字其主要作用是区分同名的局部变量和成员变量
2、构造方法
构造方法的概述
构造方法是一种特殊的方法,主要是完成对象的创建和对象数据的初始化
注意事项
构造方法的写法上,方法名与它所在的类名相同
构造方法没有返回值,所以不需要返回值类型,甚至不需要void
如果没有定义构造方法,系统将给出一个默认的无参数构造方法
如果定义了构造方法,系统将不再提供默认的构造方法
构造方法可以重载,既可以定义参数,也可以不定义参数。
3、API
什么是API
API (Application Programming Interface) :应用程序编程接口。Java API是一本程序员的字典,是JDK中提供给我们使用的类的说明文档。这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它们。
API其实就是JDK中核心类库的说明文档
对于JDK中的核心类库只需要知道如何使用,无须关心他是如何实现的
4、继承
继承的含义
在java中指的是一个类可以继承自另一个类。 被继承的类叫做父类/超类/基类,继承其他类的类叫做子类。继承后,子类中就拥有了父类中所有的成员(成员变量、成员方法), 子类就不需要再定义了。
通过继承可以将一些共性的属性,行为抽取到一个父类中,子类只需要继承即可,提供了代码的复用性
继承后成员访问规则
1. 构造方法不能被继承
2. 父类的“私有成员”可以被子类继承,但子类不能被直接访问。
3. 当通过“子类”访问非私有成员时,先在子类中找,如果找到就使用子类的,找不到就继续去“父类”
中找。
5、方法重写
方法重写的概念
子类觉得父类的方法不够好,就可以在子类中对父类的方法进行重写。
子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现。
注意事项
1. 方法重写是发生在子父类之间的关系。
2. 子类方法重写父类方法,返回值类型、方法名和参数列表都要一模一样。
3. 子类方法重写父类方法,必须要保证权限大于等于父类权限。访问权限从大到小:
public protected (默认) private
4. 使用@Override注解,检验是否重写成功,重写注解校验!建议重写方法都加上这个注解,一方面可以提高代码的可读性,一方面可以防止重写出错!
6、this和super关键字
this:存储的“当前对象”的引用;
this可以访问:本类的成员属性、成员方法、构造方法;
super:存储的“父类对象”的引用;
super可以访问:父类的成员属性、成员方法、构造方法;
super的注意事项一
super访问成员变量和成员方法: 优先去父类中找,如果有就直接使用,如果没有就去爷爷类中找,如果有,就用,依次类推
super的注意事项二
子类的构造方法默认会调用父类的空参构造方法,如果父类中的没有空参构造方法,只定义了有参构造方法,会编译报错
7、抽象类
抽象类
概述: 使用abstract关键字修饰的类就是抽象类
特点: 这种类不能被创建对象,它就是用来做父类的,被子类继承的
抽象方法
没有方法体,使用abstract修饰的方法就是抽象方法,抽象方法就是让子类重写的方法。
格式:修饰符 abstract 返回值类型 方法名 (形参列表) ;
注意事项
抽象类不能被创建对象,就是用来做“父类”,被子类继承的。
抽象类不能被创建对象,但可以有“构造方法”——为成员属性初始化。
抽象类中可以没有抽象方法,但抽象方法必须定义在抽象类中
子类继承抽象类后,必须重写抽象类中所有的抽象方法,否则子类必须也是一个抽象类
8、static关键字,final关键字
static的作用
被static修饰的内容, 属于类, 随着类的加载而加载,类的加载时机最先执行, 且只执行一次
static修饰的成员变量(也叫做类变量), 被这个类所有对象所共享
static修饰的成员变量(类变量)和成员方法(类方法), 可以直接使用“类名.”的方式调用
final的作用
final修饰的类, 不能被继承
final修饰的方法, 不能被重写
final修饰的变量就变成了常量, 它的值不能修改, 只能赋值一次
9、模版方法设计模式
模版方法模式: 在一个方法中定义一个算法的骨架, 而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下, 重新定义算法中的某些步骤。
抽象类体现的就是模板思想,模板是将通用的东西在抽象类中具体的实现,而模板中不能决定的东西定义成抽象方法,让使用模板(继承抽象类的类)的类去重写抽象方法实现需求。