JavaSE知识复习笔记04

本文介绍了Java面向对象的三大特征:封装、继承和多态,探讨了它们的概念、作用以及转型机制。同时概述了面向对象分析(OOA)、设计(OOD)和编程(OOP),并比较了面向对象与面向过程的优缺点。重点讲解了OCP原则及其在设计模式中的应用。
摘要由CSDN通过智能技术生成

Java面向对象01

  • 三大特征
    • 封装
    • 继承
    • 多态
  • 封装 Encapsulation
    • 封装就是将信息屏蔽 将信息保护起来
      • 系统应该考虑部分内容应该是仅供内部使用的 减少各个部分的信息联系
      • 合理使用封装 能够有效解耦合
    • 封装的安全性很高 也便于维护
  • 继承
    • 让子类及其对象获得其父类提供的属性和方法
    • 能够有效提供代码的复用率
    • 良好的继承结构 可以提高代码可读性
    • 继承的存在 使得方法覆盖和多态得以存在
  • 多态
    • 对于相同的行为因对象的不同而出现的多种表现状态
    • 当子类继承父类或者实现了某些接口时 父类或接口可以在编译阶段接收子类对象(自动向上转型) 当调用方法时 编译阶段编译器认为是父类执行 而运行阶段具体执行的子类的代码 这样一个对象在两个阶段中出现了不同的状态
class SuperClass {
    public void doThings() {...}
}

class SubClass extends SuperClass {
    // 子类重写了父类的方法
    public void doThings() {...}
}

class Test {
    public static void main(String[] args) {
        // 父类接收了子类对象
        SuperClass obj = new SubClass();
        // 在编译阶段 编译器obj对象是SuperClass类型 故自然可以调用其中的doThings方法
        // 这个时候称作静态绑定
        obj.doThings();
        // 在实际的运行阶段 obj引用指向的是一个SubClass类型的对象 调用其doThings方法
        // 最终会调用子类重写后的方法
        // 这个时候称作动态绑定
    }
}

转型

  • 向上转型 UpCasting
    • 父类接收子类对象 自动转型
  • 向下转型 DownCasting
    • 子类接收父类对象 需要手动转型
    • 必须强制类型转换 如果转换出错会弹出异常 java.lang.ClassCastException
      • 这个异常是运行时异常 Java编译器不会检测异常是否处理
    • 在类型转换之前为了不出错 通常建议使用 instanceof 运算符进行检测 是否为其实例

面向对象开发过程 术语

简写全称翻译
OOAObject-Oriented Analysis面向对象分析
OODObject-Oriented Design面向对象设计
OOPObject-Oriented Programming面向对象编程

面向对象与面向过程

  • 面向对象 Object-Oriented
    • 特点
      • 面向对象关心的对象 关心对象拥有什么功能 能做什么 有什么属性
      • 与人的思考方式更加贴近 更加自然
    • 优点
      • 系统的耦合度较低
      • 便于扩展业务
    • 缺点
      • 面向对象方式的设计成本较高 耗费资源
  • 面向过程
    • 特点
      • 面向过程关心实际的方法 一件事的做法 不关心谁做 只关心要怎么去做
    • 优点
      • 开发速度块 开发成本低
    • 缺点
      • 面对复杂情况时难以下手
      • 系统耦合度较高
      • 系统扩展性较低

面向对象OCP原则

  • OCP原则 Open-Close Principle
    • 开发-封闭原色
    • 一个软件应该对扩展开发 对修改封闭
    • OCP原则是整个面向对象开发可复用设计的基石 是最重要的原则之一
    • Open意味着要对组件功能扩展开发 允许后续开发者对其进行业务扩展
    • Close意味着要对原有代码修改关闭 不允许修改原有代码结构
  • OCP原则的实现思路
    • 使用抽象类/接口的方式 即面向抽象编程 面向接口编程
    • 使用抽象类/接口定义好模版 将方法真正的实现延迟至子类中
    • 而且可以通过多态接收实现好的对象 能够使业务直接分离 系统耦合度降低

Java类

  • 定义方式
    • 使用class关键字定义一个类
访问修饰符 class 类名 { 类体 }
  • 类是引用数据类型 使用时需要实例成对象来使用 使用new关键字

  • 类是一种模版 对象则是使用模版生产的实际物品

  • 类实例化后则是对象

    • 对象存储在堆内存中 使用new关键字就会在堆内存开辟新空间 用于存储对象
    • 访问对象使用引用 即引用数据类型指向对象
  • 类的属性

    • 类中的成员变量 称作属性
    • 修饰符 变量类型;
    • 类的成员变量未指定初始值的时候 JVM实例化时会赋予默认值
  • 类的行为

    • 类中的方法 称作行为
    • 方法有修饰符 返回类型 方法名 参数列表 方法体 组成
    • 修饰符 返回类型 方法名(参数列表) { 方法体 }
  • 属性和行为也有修饰符 与类的修饰符类似

Java访问修饰符

  • 定义访问权限 用于修饰类/属性/行为
    • public
    • protected
    • 缺省
    • private
修饰符类中访问包中访问子类访问外部任意
public
protected×
缺省××
private×××
  • 27
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值