前言:万物皆对象!
面向对象简称 OO(Object Oriented),20 世纪 80 年代以后,有了面向对象分析(OOA)、 面向对象设计(OOD)、面向对象程序设计(OOP)等新的系统开发方式模型的研究。
封装:
封装是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外部干扰且不被误用。封装的目的在于保护信息,使用它的主要优点如下。
♦️ 可以保护类中的信息,防止外部代码随意访问内部代码或数据
♦️ 增强了代码得复用性
♦️ 简化代码,看起来更容易懂
♦️ 一个功能只能为这个功能服务,形成一对一
♦️ 隐藏不必要出现的信息,实现细节
🏁封装的实现:
1.访问修饰符: 封装性从上到下越来越差。
🏁this关键字:
1.this关键字代表当前对象
this.属性 操作当前对象的属性
this.方法 调用当前对象的方法
🏁Java 中的内部类
🏁内部类( Inner Class )就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。
内部类的作用:
1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类。
2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据。
3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便。
继承:
继承是类与类的一种关系,就是儿子继承父亲这种关系,比如猫是动物,那么,动物类就是父类,猫类就是子类。
注:java中的继承是单继承,即一个类只有一个父类,但一个父类可以有多个子类。
🏁继承的好处
子类拥有父类的所有属性和方法(除了private修饰的属性不能拥有)从而实现了实现代码的复用;
🏁方法的重写
子类如果对继承的父类的方法不满意(不适合),可以自己编写继承的方法,这种方式就称为方法的重写。当调用方法时会优先调用子类的方法。
注意:返回值类型,方法名,参数类型及个数都与父类的方法相同才叫方法的重写
🏁继承的初始化顺序
父类对象属性初始化---->父类对象构造方法---->子类对象属性初始化--->子类对象构造方法
🏁final关键词
1. final 修饰类,则该类不允许被继承。
2. final 修饰方法,则该方法不允许被覆盖(重写)。
3. final 修饰属性,则该类的该属性不会进行隐式的初始化,所以 该final 属性的初始化属性必须有值,或在**构造方法中赋值(但只能选其一,且必须选其一,因为没有默认值!),**且初始化之后就不能改了,只能赋值一次。
4. final 修饰变量,则该变量的值只能赋一次值,在声明变量的时候才能赋值,即变为常量。
🏁super关键字
在对象的内部使用,可以代表父类对象。
1、访问父类的属性:super.name
2、访问父类的方法:super.sum()
要注意的是:如果子类构造方法中既没有显示调用父类的构造方法,而父类没有无参的构造方法,则编译出错
多态:
多态性体现在父类中定义的属性和方法被子类继承后,可以具有不同的属性或表现方式。多态性允许一个接口被多个同类使用,弥补了单继承的不足。
🏁多态的前提:
1. 继承或者实现
2. 方法的重写
3. 父类引用指向子类对象(向上转型)
🏁实现形式:
在Java中有两种形式可以实现多态:继承和接口。
1. 继承实现的多态 :
对于引用子类的父类类型,在处理该引用时,它适用于继承该父类的所有子类,子类对象的不同,对方法的实现也就不同,执行相同动作产生的行为也就不同。
如果父类是抽象类,那么子类必须要实现父类中所有的抽象方法
2. 接口实现的多态
指向接口的引用必须是指定这实现了该接口的一个类的实例程序,在运行时,根据对象引用的实际类型来执行对应的方法。
继承都是单继承,只能为一组相关的类提供一致的服务接口。但是接口可以是多继承多实现,它能够利用一组相关或者不相关的接口进行组合与扩充,能够对外提供一致的服务接口。所以它相对于继承来说有更好的灵活性。