OOP编程(面向对象)基础
OOP编程(面向对象)基础
类与实例
OOP: Object-Oriented Programming
- 对象: 对象是一个自包含的实体,用一组可识别的特性和行为来标识
- 类: 类就是具有相同属性和功能的对象的抽象集合
- 实例: 一个真实的对象(实例化就是创建对象的过程)
类A name; // 声明一个 类A的对象 叫name
name = new 类A(); // 将name对象实例化
构造方法/方法重载
- 构造方法—构造函数,就是对类进行初始化. 在被new时调用
- 所有类都有个默认无参数构造方法,,如果你定义了构造方法,则默认的失效
- 方法重载提供了创建同名的多个方法的能力, 需要参数类型,参数个数不同
封装,继承和多态
封装: 每个对象都包含它能进行操作所需要的所有信息, 这就是封装, 所以对象不必依赖其他对象来完成自己的操作,好处:
- 良好的封装能降低耦合
- 类内部的实现可以自由修改
- 类有清晰的对外接口
继承: 面向对象中 is - a 的关系,可以说为是一个 的关系 . (猫类继承动物类—猫是动物) 继承可使得修改和扩展 继承而来的实现 比较容易
- 子类拥有父类非private的属性和功能
- 子类具有自己的属性和功能
- 子类可以通过自己的方式实现弗雷德功能(方法重写)
- protected修饰的只对子类公开
多态: 不同的对象可以执行相同的动作,但是要通过他们自己的实现代码执行(实现的结果一样,但是行为方式不同)
- 子类以父类的身份出现
- 子类在工作时以自己的方式实现
- 子类以父类的身份出现是,子类特有的实行和方法不可使用
java
1 父 f1 =new 子();// 每个子类通过自己的方式完成
重构
重构就是在不改变软件系统外部行为的前提下,改善它的内部结构。具体实现方式不同
抽象类(abstract)
Java可以把类和方法声明为abstract, 即抽象方法和抽象类
- 抽象类不能实例化
- 抽象方法必须被自类重写
- 抽象方法必须在抽象类中
抽象类拥有尽可能多的共同代码,尽可能少的数据
J&DP
- 抽象类提供一个继承的出发点–一定使用来继承的
- 在一个继承关系里 – 树叶是具体类, 树枝是抽象类
接口(interface)
官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
特性
- 实现接口必须实现所有方法和属性
- 接口中的方法默认抽象的
- Java只支持单一继承,但是可以实现多个接口,接口也可以被多个类实现
接口回调:
java
1 接口 Interface =new 实现(); // 接口对象可以调用被实现类中的方法接口和抽象类
- 类是对对象的抽象 ,抽象类是对对象的抽象, 接口是对行为的抽象
- 如果行为跨越不同的类—可以用接口; 对于一些相似的类对象–用继承抽象类
- 实现接口和继承抽象类可以一起用不冲突
- 从设计角度来说: 抽象类是从子类中发现了公共选项,泛化出来的(重构); 而接口是预先定义设计出来的
委托与事件
一般我们在实现主要业务,一些辅助功能一般是父类(一般类或抽象类)中实现好了或者通过委托实现,大多数中一般使用父类,继承父类需要耦合在主类中,使用的委托的方式是解耦主类,使主类不知道谁帮我做了这些事,但是Java中没有对委托进行封装,则需要开发者自己实现。(待完成)
OOP编程的七大原则
- 开闭原则: 对扩展开放,对修改关闭(首要遵守)
- **里氏替换原则: ** 继承必须确保超类拥有的性质在子类中任然成立(尽可能不去重写父类)
- 依赖倒置原则:摆脱面向过程中高层依赖底层, 抽象依赖于具体. 而是面向接口编程
- 单一职责原则:控制累的粒度大小,将对象解耦合,高内聚(一个类的职责尽量单一)
- 接口隔离原则: 为每个类建立属于它们需要的专用接口,使用多个专门的接口比使用单一的总接口要好。
- 迪米特原则或最少知识原则: 只与直接朋友通信,或者通过朋友与陌生人传递消息
- 合成服用原则: 关联关系优于继承关系。尽量使用 合成/聚合(has - a)、尽量不使用继承(is - a)。
OOP
要做到低耦合
资源时独立的(只有 属性和方法)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 大橘のBlog!
评论