面向对象三大特征及其优劣&&接口的特点、抽象类的特点
简单介绍下面向对象三大特征?
封装:封装指的就是把对象的属性隐藏在内部,不允许外部对象直接访问内部信息,但是可以提供一些被外界访问的方法来访问属性。优点在于数据隐藏(通过定义私有属性,避免直接访问和修改对象的数据,提高数据的安全性和可靠性)、隔离复杂性(封装将类的实现细节隐藏起来,只暴露必要的接口给外部使用者,减少了对外部的依赖,降低了类与类的复杂性)、提供公共接口(通过封装、定义公共接口,对外提供统一的访问和操作方式,提供更好的交互方法、便于使用和维护);缺点在于使用不当可能会导致属性过度保护或者过度开放。
继承:继承指的就是一个类通过extends关键字来继承另一个类型,子类可以直接使用父类的非私有属性和方法,并且可以覆盖父类的方法,从而实现自己的行为。优点在于代码复用(子类可以直接使用父类的方法和属性,避免了重复编写相同的代码,提高了代码复用性),扩展性(子类可以在继承父类的继承上进行修改和扩展,添加新属性和方法,满足不同需求),(继承建立了对象之间的关系,通过继承可以形成类的体系结构,使得程序逻辑更加清晰和有组织性)。缺点在于如果结构过于复杂,层次过深,会增加类之间的关系和依赖,理解与维护代码会更加困难。有着较强的耦合关系,父类去修改的话会影响所有子类,单一继承限制(可以通过接口来解决)
多态:多态指的是一个对象有多个形态,具体的实例就是父类的引用指向子类的实例。优点在于代码的灵活性(我们可以通过统一的接口来操作不同的对象,从而提高代码的灵活性和可维护性,当需求更新时候我们只需要更换具体的子类对象,无须修改现有的代码)、实现接口的透明性(可以将对象的实际类型隐藏起来,只关注接口定义的方法。)、实现方法的回调(通过多态,可以将一个对象作为参数传递给其他方法,从而实现方法的回调,这在事件处理、回调函数的场景中非常实用,可以让程序在运行时候决定具体调用哪个方法)、提高了代码的可读性和可维护性。缺点是简单功能的过度抽象化(使用多态会导致有些功能被过度抽象,无法直接调用子类特定方法,限制了某些具体功能的使用。)、运行时开销(在运行时候要通过动态绑定和虚函数表等机制确定方法调用,额外的运行时开销会对性能产生影响)、引入复杂性。
接口
- 有Interface定义
- 可以包含常量方法、抽象方法、静态方法(1.8后)、默认方法(1.8后)、私有方法(1.9后)
- 实现类通过implements来实现
- 可以多实现
- 接口中的成员访问权限只能是public(默认是public权限),接口中的成员变量必须是public static final修饰必须有初始值
抽象类
- 由abstract来修饰
- 可以包含变量、常量、构造方法、普通方法、静态方法、抽象方法(不需要有方法体)
- 子类通过extends来继承
- 只能单一继承
- 抽象类中的成员,任何访问权限都可以(默认为默认权限(同包中))
原文地址:https://blog.csdn.net/qq2259583140/article/details/140617432
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!