面向对象编程 封装 继承 多态 是什么?如何实现?有什么好处/缺点?用于什么样的业务场景?
封装
封装是指:隐藏对象的属性和实现细节,仅对外提供公共访问方式。
封装的原则:
-
将不需要对外提供的内容都隐藏起来
-
把实现细节隐藏,提供可以对其进行访问公共的方式
-
封装的方式:
- 将某一功能、属性抽离出来,独立写成单独的方法或类
- 设置访问权限可以限定该功能或属性可以被特定的访问者访问,保证了程序的安全性和功能的稳定性。
继承
- 继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的功能
- 将事物的共性的功能和属性抽取出来定义成一个父类,让后来具有更多样化实现的子类继承父类
继承的作用:
- 让类与类之间产生关系,有了关系才有多态的实现
- Java中只支持单继承,不支持多继承,因为多继承存在安全隐患
- 当多个父类存在同个功能时,子类不确定要运行哪一个
- 类是本身就是一种抽象,如同人类,不能同时运行两个灵魂。
- 让类与类之间产生关系,有了关系才有多态的实现
继承的特点:
- 重载与重写,重载是参数列表不同,其他相同,而重写时参数列表一致。
- this表示当前对象的引用,super表示当前对象父类的引用
- 如果子父类中的成员一致时,子类成员会覆盖父类成员
多态
定义: 某一类事物具备的多种表现形态(猫、狗和动物)
表现形式:
- 父类的引用指向自己的子类对象
- 父类的引用接受自己的子类对象
多态的前提:
- 必须是类与类之间有关系,要么继承,要么实现
- 子父类成员之间存在覆盖
应用:
- 向上转型,(自然转型)
- 向下转型,(强制父类引用向下转换)
实例:
数据库操作(各种数据库):定义数据库的父类型,由哪类型的数据库调用就由该子类实现其具体操作内容。
Object类的方法
equals() 比较两个对象是否相同
toString() 返回该对象的字符串表示形式
getClass() 获取该对象对应的字节码文件对象
hasCode() 获取该对象的哈希码值
类之间的体系关系
继承:一个类继承另一个类的功能,并增加它自己的新功能或改写旧功能的具体实现
聚合:指的是整体与部分之间的关系,在定义一个整体类后,再去分析这个整体类的组成结构。(球队与球员)
组合:也表示整体与部分之间的关系,但组合关系中部分和整体具有统一的生存期。(人体与器官)
抽象类
接口
访问修饰符:
-
public : 公共的,任何类都可以访问,一个java源文件只能有一个类用public修饰,,该类名和编译后的字节码文件名相同
-
private : 私有的,仅本类可以访问,其他都不给
-
protected : 受保护的,同包可以访问,不同包的子类可以访问,重点突出继承
-
default : 默认的,出了包就不行,突出包
-
final : 将一个类生命为最终(即非继承类),表示他不能被其他类继承。
-
abstract : 将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现。
网友评论