java面向对象编程

一、面向过程的编程思想

面向过程编程,核心是编程二字,过程指的是解决问题的步骤,即先干什么、后干什么、再干什么、然后干什么……。面向过程可以理解为将复杂问题分解为几个步骤或者模块,是模块化的思想方法。我们平常完成的业务需求很多都是这种面向过程的开发,只需考虑将表面问题分解解决,无需考虑其中一个步骤的改变带来的影响。

优点:复杂的问题流程化,进而简单化
缺点:修改一个阶段,其他阶段都有可能需要作出修改,牵一发而动全身,即扩展性极差。
应用:用于扩展性要求低的场景

二、面向对象的基本概念

1、面向对象的综述

在程序开发初期,大家使用的是结构化开发语言,也就是面向过程(opp),但随着市场需求剧增,软件的规模也越来越大,结构化语言的弊端也暴露出来。开发周期无休止的拖延,软件质量也越来越差。为了更好的适应市场,有人就开始以另一种开发思想引入程序中,也就是面向对象的开发思想(oop)。

面向对象思想是人类最自然的一种思考方式,他将所有预处理的问题抽象为对象,同时了解这些对象具有哪一些对应的属性以及行为,以解决这些对象面临的一些实际问题,面向对象设计实质上就是对现实世界的对象进行建模操作。或者说把现实世界的操作虚拟到程序中去。

简单来讲就是模拟现实世界中处理问题的逻辑,比如电视机的信号来源光纤,有线缆、编码器、解码器、放大器等等实体组成。然后我们可以将编程需求分解为几个实体,分别完成这几个实体就能实现我们的需求。这种解决问题的思维与现实世界中的思路相同,并且如果遇到类似需求,我们的代码还能重复使用,达到重用的效果,也就是方便扩展。

2、什么是对象

对象,是一个抽象概念,英文称为“Object”,表示存在的事物。通俗的来说就是世间万物皆对象!现实世界中肉眼可见的一种事物都是对象,对象是事物存在的实体,例如:人、手机、电脑。为了大家能简单的理解,只要现实世界中看得到的实物都是一个对象。

对象的组成
一个实体(对象)可以划分两个部分,一个是描述外观和功能。那么在程序里关于实体(对象)描述外观的称为“属性”;实体(对象)的功能称之为“行为”或“方法”,也就是实体(对象)执行的动作。例如:人的性别是描述这个实体(对象)的,人能行走也能吃饭和学习是执行的动作。

实体(对象)由属性和行为组成,也就是实体(对象)的外观和功能。

3、类的概念

对象用计算机语言对问题域中事物的描述,对象通过“属性attribute”和“方法method”来分别对应事物所具有的静态属性和动态属性。类是用于描述同一类型的对象的一个抽象的概念,类中定义了这一类对象所因具有静态和动态属性。类可以看成一类对象(object)的模版,对象可以看成该类的一个具体实例(instance)。

三、面向对象的编程思想

1、Alan Kay的OOP思想:

  • 消息传递
  • 封装
  • 动态绑定(晚绑定(latebinding),指的是编译器或解释器程序在运行前,不知道对象的类型。使用晚绑定,无需检查对象的类型,只需要检查对象是否支持特性和方法即可)

2、Simula 67的OOP思想

引入了所有后来面向对象程序设计语言所遵循的基础概念:对象、类、继承,但它的实现并不是很完整。

3、现代OOP的思想

是从Simula 67的OOP思想发展而来的,主要是C++/Java语言上的封装,继承,多态等等特性。

封装:

  1. 定义:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。
  2. 封装的目的是:增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。
  3. 封装的基本要求是:把所有的属性私有化,对每个属性提供getter和setter方法,如果有一个带参的构造函数的话,那一定要写一个不带参的构造函数。在开发的时候经常要对已经编写的类进行测试,所以在有的时候还有重写toString方法,但这不是必须的。

继承:

  1. 目的:实现代码的复用。
  2. 介绍:当两个类具有相同的特征(属性)和行为(方法)时,可以将相同的部分抽取出来放到一个类中作为父类,其它两个类继承这个父类。继承后子类自动拥有了父类的属性和方法,但特别注意的是,父类的私有属性和构造方法并不能被继承。另外子类可以写自己特有的属性和方法,目的是实现功能的扩展,子类也可以复写父类的方法即方法的重写。

多态:

  1. 概念:相同的事物,调用其相同的方法,参数也相同时,但表现的行为却不同。
  2. Java实现多态有三个必要条件:继承、重写、向上转型。 只有满足了上述三个条件,我们才能够在同一个继承结构中使用统一的逻辑实现代码处理不同的对象,从而达到执行不同的行为。
    (1)继承:在多态中必须存在有继承关系的子类和父类。
    (2)重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
    (3)向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。
  3. 多态的实现方式:
    (1)基于继承实现的多态
    基于继承的实现机制主要表现在父类和继承该父类的一个或多个子类对某些方法的重写,多个子类对同一方法的重写可以表现出不同的行为。
    (2)基于接口实现的多态
    继承是通过重写父类的同一方法的几个不同子类来体现的,那么就可就是通过实现接口并覆盖接口中同一方法的几不同的类体现的。 在接口的多态中,指向接口的引用必须是指定这实现了该接口的一个类的实例程序,在运行时,根据对象引用的实际类型来执行对应的方法。 继承都是单继承,只能为一组相关的类提供一致的服务接口。但是接口可以是多继承多实现,它能够利用一组相关或者不相关的接口进行组合与扩充,能够对外提供一致的服务接口。所以它相对于继承来说有更好的灵活性。
  4. 多态性主要表现在如下两个方面:
    (1)方法重载.通常指在同一个类中,相同的方法名对应着不同的方法实现,但是方法的参数不同.
    (2)成员覆盖.通常指在不同类(父类和子类)中,允许有相同的变量名,但是数据类型不同;也允许有相同的方法名,但是对应的方法实现不同.
  5. 多态的好处:程序的可扩展性及可维护性增强。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值