面向对象(OOP)

(Object Oriented Programming)面向对象的编程
OOD(面向对象的设计),OOA(面向对象的分析)

分类是人们认识世界的一个很自然的过程
在日常生活中会不自觉的进行分类
分类要总结出类型所拥有的属性(特征)及操作(方法)

什么是对象

对象:用来描述客滚事务的一个实体,由一组属性和方法构成

  • 对象同时拥有属性和方法两项特性
  • 对象的属性和方法通常被封装在一起,组成类,共同体现事物的特性,不能分割

什么是类

  • 具有相同属性和方法的一组对象的集合
  • 类是对象的类型
  • 不同于int类型,具有方法
  • 对象是类的实例
  • 类是摸具,模板,通过模具,模板做出来的实例就是对象

基本类型声明的变量称为变量名
其他类型声明的变量称为对象名

以下两大点是查找资料时看到的,写的很好

参考点击跳转

面向对象的优点

  • 与人类的思维习惯一致
  • 把人类解决问题的思维过程转变为程序能够理解的过程
  • 信息隐藏,提高了程序的可维护性和安全性
  • 封装实现了模板化和信息隐藏
  • 封装使得在对象外部的不能随意访问对象的属性和方法
  • 提高了程序的可重用性
  • 一个类可以创建多个实例,提高可重用性

面向对象的三大特性

  1. 封装
  • 隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性
  1. 继承
  • 提高代码复用性;继承是多态的前提
  1. 多态
  • 父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性

面向对象的五大基本原则

  1. 单一职责原则SRP(Single Responsibility Principle)
  • 类的功能要单一,不能包罗万象,跟杂货铺似的
  1. 开放封闭原则OCP(Open-Close Principle)
  • 一个模块对于拓展是开放的,对于修改是封闭的,想要增加功能热烈欢迎,想要修改,哼,一万个不乐意
  1. 里式替换原则LSP(the Liskov Substitution Principle LSP)
  • 子类可以替换父类出现在父类能够出现的任何地方。
  1. 依赖倒置原则DIP(the Dependency Inversion Principle DIP)
  • 高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。就是你出国要说你是中国人,而不能说你是哪个村子的。比如说中国人是抽象的,下面有具体的xx省,xx市,xx县。你要依赖的是抽象的中国人,而不是你是xx村的。
  1. 接口分离原则ISP(the Interface Segregation Principle ISP)
  • 设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。就比如一个手机拥有打电话,看视频,玩游戏等功能,把这几个功能拆分成不同的接口,比在一个接口里要好的多

方法

方法的几要素
  1. 访问权限
  2. 方法的返回值
  3. 方法的名称
  4. 方法的参数
  • 方法的参数就是方法运行的必要条件
如何定义一个方法
  1. 思考这个方法所要完成的功能是什么
  2. 这个方法需不需要返回值
  • 两种情况
    • 如果方法具有返回值,方法中必须使用关键字return返回该值,返回类型为该返回值的类型
    • 如果方法没有返回值,返回类型为void
  1. 方法名(跟功能相关的单词)
  2. 需不需要参数
方法调用
  • 同一个类之间的成员方法 可以互相调用
  • 不同类之间方法调用的步骤:
  1. 要先new类的对象
  2. 再 通过对象名.方法名()调用

变量

  • 局部变量
  • 在方法内部定义的变量一般称为局部变量,局部变量的作用域为定义位置的后面
  • 在循环中定义的变量只对循环内部有效
  • 成员变量
  • 在类中定义的属性称为类的成员变量
  • 成员变量的作用域为:类的所有非static方法

成员变量和局部变量的区别:

  • 作用域不同
  • 局部变量的作用域仅限于定义它的方法
  • 成员变量的作用域在整个类内部都是可见的
  • 初始值不同
  • Java会给成员变量一个初始值
  • Java不会给局部变量赋予初始值
  • 局部变量在同一个花括号内部中,不允许有同名局部变量;在不同的花括号中,可以有同名局部变量
  • 两类变量同名时,局部变量具有更高的优先级

遥望漉雪千山都过尽,隔海隔山你的背影。