java学习笔记1--面向对象

前言

面向对象和面向过程

1. 面向过程

  • 面向过程是以过程为中心的编程思想,是一种自顶而下的编程模式。典型的面向过程的编程语言就是C语言
  • 概述:把问题分成一个一个步骤,每个步骤都用函数实现,依次调用

2. 面向对象

  • 面向对象是一种把事务高度抽象化的编程思想。面向对象的编程语言主要有java、c++、python....
  • 概述:把属性、行为等封装成对象,通过不同对象之间的调用,组合解决问题

面向对象的三大基本特征

1. 封装--将客观事物封装为抽象的类,而且将类的某些信息隐藏,不可让外界直接访问,只能通过方法调用

  • 封装原则:隐藏信息--将成员变量私有化;方法调用--将方法设为public
  • 好处:
    • 通过方法来控制成员变量的操作,提高了代码的安全性;
    • 把代码用方法进行封装,提高了代码的复用性;

2. 继承--使子类具有父类的属性和方法,并且可以在子类中重新定义,以及追加属性和方法

  • 概念:被继承的类就叫父类;通过继承而创建的类就叫子类
  • 继承方式:extends
  • 好处:
    • 提高了代码的复用性(多个类相同的成员可以放到同一个类中)
    • 提高了代码的维护性(如果方法的代码需要修改,修改一处即可)
  • 弊端:类的耦合性增强了,当父类发生变化时子类实现也不得不跟着变化,削弱了子类的独立性

3. 多态--同一个对象,在不同时刻表现出来的不同形态

  • 前提:
    • 有继承或实现关系,即extends和implements
    • 有方法重写
    • 父类引用指向子类对象,如 Animal a = new Cat(),其中Animal是父类,Cat是子类
  • 概述:
    • Animal是父类,Cat、Dog是其子类
    • 动物园里叫了一声"Animal过来",这时就会出现两种情况
    • 一种是:猫过来了,即 Animal a = new Cat(),这就出现了多态
    • 另一种是:狗过来了,即 Animal a = new Dog(),这就出现了多态
  • 迷糊点:为什么要父类引用呢?为什么不直接创建一个子类对象?
    • 我的理解是:程序开发的某些时候,我们不知道过来的是"猫"还是"狗",只知道过来的一定是个Animal,所以我们只能创建一个Animal对象来指向子类对象,也就是指向过来的"猫"或"狗",这就是为什么要父类引用了
    • 实例:设计一个父类 FileRead 用来读取文件,ExcelRead 类和 WordRead 类继承 FileRead 类。在使用程序的时候,往往事先不知道我们要读入的是 Excel 还是 Word。所以我们向上转型用父类去接收,然后在父类中实现自动绑定,这样无论你传进来的是 Excel 还是 Word 就都能够完成文件读取。
  • 好处:提高程序的扩展性。定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作
  • 弊端:不能使用子类的特有成员
posted @ 2021-03-28 14:29  金鱼同学  阅读(72)  评论(0编辑  收藏  举报