Java学习——面向对象编程思想

小咪咪 2023-09-28 08:03 231阅读 0赞

目录

一. 基本概念

二. 面向对象与面向过程的区别

三. 面向对象程序设计的类与对象

3.1 对象

3.2 类

四. 面向对象的四大特征

4.1 抽象

4.2 继承

4.3 封装

4.4 多态

1)实现多态性的三种方式:

2)重载:

3)重写:

4)接口:

五. 面向对象思想优点

六. 面向对象思想总结

6.1 三大特征

6.2 五种关系

6.3 七大原则

七. Java技巧学习专栏


一. 基本概念

  • 问题领域(Program Domain):软件系统所模拟的真实世界中的系统;
  • 对象(Object):对问题领域中事物的抽象
  1. 万物皆对象;
  2. 唯一;
  3. 属性行为;
  4. 状态;
  5. 属于某类;

    • 类(Class):一组具有相同属性和行为的对象的抽象;
    • 接口(Interface):描述能够提供哪些服务,不包含服务的实现细节;
  6. 系统对外提供的所有服务;

  7. 接口类型;

    • 抽象(Abstract):从特定角度出发,从已存在的一些事物中抽取所关注的特性,形成一个新的事物的思维过程
  8. 从问题领域的事物到软件模型中对象的抽象;

  9. 从对象到类的抽象;
  10. 从子类到父类的抽象;

简单来说,面向对象编程(Object Oriented Programming,简称OOP)描述的是对象之间的相互作用。


二. 面向对象与面向过程的区别

过程化程序设计先确定算法,再确定数据结构;面向对象编程先确定数据结构,在确定算法。

面向过程编程的程序员,习惯于建立数据结构存放数据并定义方法(函数)来操作数据;面向对象编程的程序员则构造一个对象模型,将数据与方法组织在一起。

为了更好的理解面向对象编程思想,我们可以举个生活中的例子:如何把衣服放入衣柜?

面向过程:为了把衣服装进衣柜,需要3个过程。

  • 把衣柜打开(得到打开的衣柜)
  • 把衣服放进去(打开门后,得到里面存放衣服的衣柜)
  • 把衣柜门关上(打开门、存好衣服、获得关好门的衣柜)

每个过程有一个阶段性的目标,依次完成这些过程,就能把衣服存进衣柜。

面向对象: 为了把衣服存入衣柜,需要做三个动作(或者叫行为)。 每个动作有一个执行者,它就是对象。

  • 衣柜,你给我把门打开
  • 衣柜,你给我把衣服装进去(或者说,衣服,你给我钻到衣柜里去)
  • 衣柜,你给我把门关上

依次做这些动作,就能把衣服存入衣柜。

  • 衣柜.开门()
  • 衣柜.存入(衣服)
  • 衣柜.关门()

三. 面向对象程序设计的类与对象

3.1 对象

对象就是一组变量和相关方法的集合,一个对象有状态、行为等,其中变量表明对象的状态,方法表明对象所具有的行为;

对象的生成:

通过new操作符生成一个对象,例如:MyDate md = new MyDate();

3.2 类

  • 类是一组具有相同数据结构和相同操作的对象集合。
  • 类是组成Java的基本要素,它封装了一类对象的状态和方法。
  • 类是具有相似属性和行为的一组具有实例(对象)的抽象集合。组成类的对象均为此类的实例,类与实例的关系可以看成是抽象与具体的关系

ef048ab4fbe248949e4efae9c379c2da.png

  1. public class MyDate{
  2. private int day,month,year;
  3. public MyDate(int day,int monyh,int year){
  4. this.day = day;
  5. this.month = month;
  6. this.year = year;
  7. }
  8. public int getDate(){....}
  9. }

四. 面向对象的四大特征

dfcc61b3081949088c56bac3f8b894a8.png

4.1 抽象

  • 抽象就是将一类实体的共同特性抽象出来,封装在一个新的类中,所以说抽象是面向对象语言的基础。 比如狗是一个对象,但是在研究这个对象的时候会把它的一些同类放在一块,一起来考虑,而且抽象的时候,只考虑感兴趣的一些数据;某些人可能关心的数据是,狗类的叫声,狗类的蹦跑的方法;某些人可能关心的数据是狗的颜色,狗的大小等等。
  • 通常用抽象来处理复杂性。比如车子,不会把它想象成有多少个独立的部分组成,而是把它想成一个具有自己独特行为的对象,可以忽略引擎、传动及刹车系统的工作细节,将车子作为一个整体来加以利用。

4.2 继承

让一个类B去继承另一个类A,那么被继承的类A里的一些公开的可以被B看到的东西都可以被B继承过来,就不必重新开发。其实继承体现的是is-a关系。

继承是一个对象获得另一个对象的属性的过程。

例如 “人”是一个基类,则“男人”是“人”的一个子类。如果“小李”是一个“男人”,也就是说“小李”是“男人”的一个对象,那么显然“小李”也是“人”这个基类的一个对象。

子类具有父类的一般特性(包括属性和行为),以及自身的特殊的特性。

在Java中使用extends关键字表示继承 ;

如:声明一个男人类继承人类:public class Man extends Human{ }

4.3 封装

对象是对一组变量和相关方法封装。通过对象的封装,实现了模块化和信息隐藏 用访问控制符来控制对类成员的访问权限,实现类成员的隐藏。







































同一个类

同一个包

不同包的子类

不同包的非子类

private

default

protected

public

4.4 多态

Java语言的多态是指程序中同名的不同方法共存的情况,多态可为程序提供更好的可扩展性,同样也可以代码重用。

1)实现多态性的三种方式:

  • 通过子类对父类方法的覆盖实现多态;
  • 利用重载在同一个类中定义多个同名的不同方法来实现多态;
  • 接口指向实现类;

2)重载:

在同一个类中,方法名相同,参数列表不同,所引起俩个方法的差异叫重载;

  1. class test
  2. int addint i,int j
  3. {....}
  4. float add(float f,float t)
  5. {....}
  6. String add(String s,String sb)
  7. {....}

3)重写:

在存在父子继承关系的前提下,子类把从父类继承过来的方法,完全重写编写的过程叫做重写。(方法名相同;参数列表相同;返回类型相同;)

4)接口:

  • 通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。
  • 通过接口可以指明多个类需要实现的方法;
  • 通过接口可以了解对象的交互界面,而不需要了解对象所对应的类;
  • 接口的定义:
  • 常量必须初始化,可以不写final;
  • 接口为public时,文件名必须和接口一致,如:

interface Collection{ }

  • 接口实现多态:

    1. public interface A
    2. public int s1(...);
    3. public class b implements A{...}
    4. public class c implements A{...}
    5. A a = new b(); A a = new c();
    6. a.s1(); a.s1();

五. 面向对象思想优点

  • 可重用性:编写可重用模块,比如类;
  • 可扩展性:要求应用软件能够很方便、很容易的进行扩充和修改;
  • 可管理性:采用封装了数据和操作的类作为构建系统的部件,使项目组织更加方便合理;

六. 面向对象思想总结

  • 面向对象程序设计的主要特点是以对象作为基本的逻辑构件,用类来描述具有相同特征的对象,整体的代表这类对象,以继承性作为共享机制,共享类中的方法和属性,对象之间则以消息传递的方式进行。
  • 与传统的程序设计开发人员不再是仅仅根据某种程序设计语言的语句和表达式来编制程序,而是要求软件开发者通过装配其他编制着提供的可重用的“软件体”的来生产软件,面向对象的程序设计最为显著的特点还是封装性、继承性、多态性。

6.1 三大特征

  • 封装(Encapsulate):隐藏对象的属性和实现细节,仅对外公开接口;
  • 继承(Inheritance):继承是子类使用父类的方法;
  • 多态(Polymorphism):接口的多种不同的实现方式即为多态;

6.2 五种关系

  • 关联(Association):类之间的特定对应关系;
  • 依赖(Dependency):类之间的调用关系;
  • 聚集(Aggregation):整体与部分之间的关系;
  • 泛化(Generalization) :类之间的继承关系;
  • 实现(Realization):类与接口之间的关系;

6.3 七大原则

  • 开闭原则 The Open Closed Principle(OCP)
  • 里氏替换原则 Liskov Substitution Principle(LSP)
  • 单一职责原则 Single Responsibility Principle(SRP)
  • 依赖倒置原则 Dependence Inversion Principle(DIP)
  • 接口隔离原则 Interface Segregation Principle(ISP)
  • 迪米特法则 Law of Demeter(LoD)
  • 合成复用原则 Composite/Aggregate Reuse Principle (CARP)

七. Java技巧学习专栏

https://blog.csdn.net/weixin_53919192/category_11805605.html?spm=1001.2014.3001.5482icon-default.png_t_M4ADhttps://blog.csdn.net/weixin\_53919192/category\_11805605.html?spm=1001.2014.3001.5482

发表评论

表情:
评论列表 (有 0 条评论,231人围观)

还没有评论,来说两句吧...

相关阅读

    相关 面向对象编程思想(OOP)

        本文我将从面向对象编程思想是如何解决软件开发中各种疑难问题的角度,来讲述我们面向对象编程思想的理解,梳理面向对象四大基本特性、七大设计原则和23种设计模式之间的关系。

    相关 面向对象编程思想

    面向对象思想 前言        计算机的革命起源于机器,所以说,编程语言的产生也是始于对机器的模仿。在19世纪的早期就已经出现过计算机的雏形。那时,人们为了构建导

    相关 JAVA Review-面向对象编程思想(一)

    前言 本节我们将重温一下面向对象编程思想。 我相信有很多同学和我有同一个感受:在面试时,面试官问你是怎么理解面向对象编程思想的? 我们的回答比较凌乱,隐约间好像理

    相关 Java编程思想 - 面向对象

    一、面向对象概念 什么是面向对象,被说烂了的一句就是“万物皆为对象”。 用白话表示就是,你要面对的事物是什么? 普通人面对两个人在走路,他们的面向对象是人类,走路,

    相关 面向对象编程思想(OOP)

    本文我将从面向对象编程思想是如何解决软件开发中各种疑难问题的角度,来讲述我们面向对象编程思想的理解,梳理面向对象四大基本特性、七大设计原则和23种设计模式之间的关系。 软件开

    相关 面向对象编程思想

    本文为极客时间《设计模式之美》的读书笔记 面向对象编程 面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作

    相关 面向对象编程思想-抽象

    一 抽象的介绍 我们在定义一个结构体时,实际上就是把一类事物的共有的属性(字段)和行为( 方法)提取出来,形成一个 物理模型(结构体)。这种研究问题的方法称为抽象。 !