目录
封装
1.封装概念
- 封装把一个对象的属性利用provied关键字私有化,同时提供一些可以被外界访问的属性的方法,
- 封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
- 适当的封装可以让程式码更容易理解与维护,也加强了程序的安全性。
2.优点:
- 1. 良好的封装能够减少耦合。
- 2. 隐藏类内部的结构的细节,方便修改和实现。。
- 3. 可以对成员变量进行更精确的控制。
- 4. 只能通过特定的方法进行访问
3.封装的实现步骤
- 1. 一般用private修饰属性
- 2. 对每个属性提供对外的公共方法访问方法,通常情况下,这些方法被称为getter和setter方法。
4.set和get方法在idea中的生成方法一
- 1、首先创建一个类
- 2、在类中鼠标右键选择Generate
- 3、选择需要生成set和get方法的字段
- 5、点击完成自动生成代码
5.set和get方法在idea中的生成方法二
- 利用注解的方式,当后面接触了框架后
- 导入lombok的jar包,在idea中下载lombok插件,
- 再在类上放@data注解,框架底层会自动创建get.set等一系列方法
继承
1.继承概念
继承是类与类的一种关系,是一种“is a”的关系。比如“student”继承“person”,这里person类是student类的父类,student类是person类的子类.语法规则,只要在子类类名后加上extends关键字并写上需要继承的父类就可以了.
2.继承的好处
子类的定义可以增加新的数据或新的功能,也可以用父类的功能(除了private修饰的属性不能用),但不能选择性地继承父类。通过使用继承我们能够非常方便地复用以前的代码。
3.方法的重写
子类如果对继承的父类的方法不满意,可以自己编写继承的方法,这种方式就称为方法的重写。当调用方法时会优先调用子类的方法.
重写(override)的原则:两同两小一大原则
- 方法名相同.
- 参数类型相同
- 子类返回类型小于等于父类方法返回类型,
- 子类抛出异常小于等于父类方法抛出异常,
- 子类访问权限大于等于父类方法访问权限。
4. 重载Overload 与重写Override的区别
- 重载:在一个类中的现象:同一个类中,存在方法名相同,参数列表不同的方法
- 重写:是指建立了继承关系以后,子类对父类的方法不满意,可以重写,遵循两同两小一大原则
- 重载的意义:是为了外界调用方法时方便,不管传入什么样的参数,都可以匹配到对应的同名方法
- 重写的意义:在不修改源码的情况下,进行功能的修改与拓展
5. this与super的区别
- this: 代表本类对象的引用
- super:代表父类存储空间的标识,可以理解成父类对象的引用
- this关键字指向调用该方法的对象,一般我们是在当前类中使用this关键字.所以我们常说this代表本类对象的引用
- super的使用前提是继承,没有父子类关系,就没有super
- this调用构造方法或者super调用构造方法,都必须出现在构造方法的第一行
- 如果父类没有无参构造,需要手动在子类构造方法的第一行调用其他的含参构造
- 如果子类重写了父类的方法以后,可以使用super.方法名(参数列表)来调用
多态
1.多态的概念
可以把不同的子类对象都当作父类来看,这样可以写出通用的代码,做出通用的编程,统一调用标准。
2 . 特点
- 多态的前提1:是继承
- 多态的前提2:要有方法的重写
- 父类引用指向子类对象,如:Animal a = new Cat();
- 多态中,编译看左边,运行看右边
3. 多态的好处
- 多态可以让我们不用关心某个对象到底具体是什么类型,就可以使用该对象的某些方法
- 提高了程序的可扩展性和可维护性
4. 多态中属性的使用
- 前提:多态对象把自己看做是父类类型
- 成员变量: 使用的是父类的
- 成员方法: 由于存在重写现象,所以使用的是子类的
- 静态成员: 随着类的加载而加载,谁调用就返回谁的
5.向上转型和向下转型
- 在继承过程中就存在着多态的应用。存在着两种转型方式,分别是:向上转型和向下转型。
- 向上转型:可以把不同的子类对象都当作父类来看,进而屏蔽不同子类对象之间的差异,写出通用的代码.
- 父类的引用指向子类对象,向上转型时,子类对象当成父类对象,只能调用父类的功能,如果子类重写了父类中声明过的方法,方法体执行的就是子类重过后的功能。但是此时对象是把自己看做是父类类型的,所以其他资源使用的还是父类型的。
- 向下转型:子类的引用的指向子类对象,过程中必须要采取到强制转型。
- 其实,相当于创建了一个子类对象一样,可以用父类的,也可以用自己的
- 向下转型时,是为了方便使用子类的特殊方法,也就是说当子类方法做了功能拓展,就可以直接使用子类功能。