面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是软件工程领域的一种设计方法论,它强调从现实世界的对象出发,利用面向对象技术来构建软件系统。面向对象技术的核心在于其三大特性:封装、继承和多态。 ### 封装 封装是面向对象的一个基本特征,它是指将数据和操作数据的方法绑定在一起,隐藏对象的属性和实现细节,只对外提供公共的访问方式。在Java中,通过访问修饰符如`private`、`protected`和`public`来控制类成员的可见性,实现封装。封装的好处在于增强安全性,提高模块独立性,简化了系统维护,因为外部组件无需知道对象内部的具体实现。 ### 继承 继承是面向对象的另一个关键特性,它允许创建一个新的类(子类)从现有的类(父类)继承属性和行为。这有助于代码复用和模块化设计。在Java中,一个类可以通过关键字`extends`来继承另一个类,从而获得父类的非私有属性和方法。然而,过度使用继承可能导致类间关系过于紧密,降低系统的可维护性和灵活性。因此,在实际开发中,建议优先考虑使用组合或聚合来替代继承,以减少耦合度。 ### 多态 多态是面向对象的第三个核心特征,它允许程序以一种统一的方式处理不同的对象类型。多态分为两种形式:编译时多态(重载)和运行时多态(覆盖)。在Java中,多态的实现主要通过方法覆盖(Override)和接口实现。方法覆盖使得子类可以提供与父类相同方法的不同实现,而接口则提供了另一种实现多态的方式,即一个类可以实现多个接口,从而表现出多种行为。 ### 构造方法与重载 构造方法是类的一个特殊方法,用于初始化对象。在Java中,构造方法没有返回类型,名称与类名相同,并且可以被重载,即在同一个类中可以有多个构造方法,它们具有不同的参数列表,这提供了创建对象的不同方式。需要注意的是,构造方法不能被继承。 ### 接口 接口是一种抽象类型,用于定义一组行为规范。在Java中,接口中的所有方法默认是抽象的和公共的,所有属性默认是静态的和最终的。一个类可以通过实现接口来承诺将提供接口中指定的所有方法的实现。接口支持多重继承,即一个类可以实现多个接口,从而达到多继承的效果。接口的使用有助于提高代码的可扩展性和可维护性,通过接口编程可以遵循“依赖倒置”原则,使得高层模块依赖于抽象而非具体实现。 ### 设计原则 面向对象设计遵循一系列原则,以确保设计的灵活性、可维护性和可扩展性。其中,Liskov替换原则(LSP)、开闭原则(OCP)、单一职责原则(SRP)、接口隔离原则(ISP)、依赖倒置原则(DIP)和组合/聚合复用原则(CARP)是核心原则。这些原则指导开发者如何设计出高质量的面向对象系统。 - **Liskov替换原则**(LSP):子类型必须能够替换其基类型。 - **开闭原则**(OCP):软件实体应当对扩展开放,对修改关闭。 - **单一职责原则**(SRP):一个类应该只有一个引起它变化的原因。 - **接口隔离原则**(ISP):客户端不应该被迫依赖它不需要的接口。 - **依赖倒置原则**(DIP):高层模块不应该依赖于低层模块,二者都应该依赖于抽象。 - **组合/聚合复用原则**(CARP):优先使用组合或聚合而非继承来实现复用。 通过遵循这些设计原则,可以构建出更加健壮、灵活和易于维护的面向对象系统。
什么是对象?
对象是客观存在的事物,万物皆对象
方法的重载?
方法名相同,参数不同;返回的类型可以不同;不受抛出异常影响;重载不仅出现在同一个类中,也可以出现在父子类中;参数的匹配有个向上就近原则
java中的构造方法:
特点:没有返回值,方法名和类名相同;
构造方法可以是重载的,但是不能被继承。
什么是封装?
封装指的是一个对象内部状态对外界是透明的,对象于对象之间只关心有什么方法,而不是关心属性;封装使实现的改变对架构的影响最小;封装使对象的属性尽可能的私有,
根据需要配上相应的get和set方法,对象的方法要尽可能的公开。
什么是继承?
基于一个已经存在的类构造一个新类,继承存在的类就是复用这些类的方法和属性,也可以在此基础上添加相应的新的方法和属性。
在实际开发过程中一般组合复用代替继承复用;这样可以不需要把父类的所有方法暴露给子类,加大耦合度。
什么是多态?
所谓多态就是指一个父类的引用指向一个子类的对象;换句话就是多态使我们可以把一个子类对象看作是一个父类对象(一个对象多种形态)
重载又叫编译时多态,覆盖又叫运行时多态;
在方法重载的情况下,参数类型决定于编译时类型.
多态的作用?
在我们需要一类对象的共性时,我们可以容易的抽取。多态使我们有机会写出通用代码以适应需求的不断变化.
多态的用法: 多态用在方法的参数上;多态用在方法的返回类型上
java中什么是方法覆盖?
子类方法覆盖父类方法; 参数表,方法名必须完全相同;返回类型相同;子类的访问修饰符不能比父类更窄;
- 粉丝: 0
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助