对于面向对象的理解

一、什么是面向对象

面向对象乃是Java语言的核心,是程序设计的思想。Java语言的面向对象技术包括了面向对象和面向过程的基本概念,面向对象的特征,Java语言的类,对象,修饰符,抽象类等一系列的知识点。
首先了解一下什么是对象:
关于对象的理解很简单,在我们的身边,每一种事物的存在都是一种对象。总结为一句话也就是:对象就是事物存在的实体,万物皆对象。举个简单的例子,比如人类就是一个对象,然而对象是有属性和方法的,那么姓名,年龄,身高,体重,性别这些是每个人都有的特征可以概括为属性,当然了我们还会思考,学习,这些行为相当于对象的方法。不过,不同的对象就会有不同的行为。
面向对象:

面向对象就是把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。对象即为人对各种具体物体抽象后的一个概念,人们每天都要接触各种各样的对象,如手机就是一个对象。
核心是一个对象
对象是一个数据以及相关行为的简化的集合
面向对象是功能上指向建模对象
通过数据和行为方式来描述交互对象的集合
优点:
1、性能比面向对象好,因为类调用时需要实例化,开销比较大,比较消耗资源。
2、解决程序的拓展性
缺点:
1、不易维护、不易复用、不易扩展。
2、复杂度远高于面向过程。
3、交互是解决问题,无法准确预测结果。
类:
类就是类别,种类

对象就是特征和技能的统一体。

类则是这一系列对象的特征和技能的结合。

对于现实世界,先有个体(即对象),才有类别;

但对于程序,必须先有类,才有对象的。
面向对象的三大特性:
一、封装
两层含义:
一、把对象的属性和行为看成一个密不可分的整体,将这两者“封装”在一个不可分割的独立单元(即对象)中;

二、层含义指“信息隐藏”,把不需要让外界知道的信息隐藏起来,有些对象的属性及行为允许外界用户知道或使用,但不允许更改,而另一些属性或行为,则不允许外界知晓,或只允许使用对象的功能,而尽可能隐藏对象的功能实现细节。
优点:
1、良好的封装能够减少耦合,符合程序设计追求“高内聚,低耦合”。
2、类内部的结构可以自由修改。
3、可以对成员变量进行更精确的控制。
二、继承
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
类的继承格式:
class 父类 { }
class 子类 extends 父类 { }
继承的好处:

(1)、提高类代码的复用性
(2)、提高了代码的维护性
(3)、使得类和类产生了关系,是多态的前提(它也是继承的一个弊端,类的耦合性提高了)
特性:

子类拥有父类非 private 的属性、方法。
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
子类可以用自己的方式实现父类的方法,即重写父类方法。

三、多态
多态是同一个行为具有多个不同表现形式或形态的能力。
优点:

  1. 消除类型之间的耦合关系
  2. 可替换性
  3. 可扩充性
  4. 接口性
  5. 灵活性
  6. 简化性

面向过程:
所谓过程就是我们解决问题的步骤,一步步的按照流程走,有先后之分。
优点:
1、复杂的问题流程化,将问题分解简化。
缺点:
1、拓展性不好。

名称面向对象程序设计面向过程程序设计(也叫结构化编程)
定义面向对象顾名思义就是把现实中的事务都抽象成为程序设计中的“对象”,其基本思想是一切皆对象,是一种“自下而上”的设计语言,先设计组件,再完成拼装。面向过程是“自上而下”的设计语言,先定好框架,再增砖添瓦。通俗点,就是先定好main()函数,然后再逐步实现mian()函数中所要用到的其他方法。
特点封装、继承、多态算法+数据结构
优势适用于大型复杂系统,方便复用、适用于简单系统,容易理解
劣势比较抽象、性能比面向过程低难以应对复杂系统,难以复用,不易维护、不易扩展
对比易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
语言Java、Smalltalk、EIFFEL、C++、Objective-、C#、Python等C、Fortran

**

二、面向对象编程

(OOP: object-oriented programming)
其实是一种程序设计思想。OOP把对象作为程序的一个基本单元,一个对象就包含了数据和操作数据的函数。

在python中,所有数据类型都可以视为对象,同时我们也可以自定义对象。
自定义对象的数据类型就是面向对象种类(class)的概念。

面向过程的方式

let stiu = {"name":’张三‘,"age"=20}
let stu2 =  {"name":’李华‘,"age"=18}

函数实现

def find_age(stu):
print(stu['name'],':',stu[;age'])

面向对象

class student:
   def _init(self,name,sex,age):
        self.name=name
        self.sex=sex
        self.age=age
  def eat(self):
        print(self.name,'is play a ball')
  def eat(self):   
      print(self.name,'is fishing') 
        def eat(self):   
      print(self.name,'isMountain climbing') 
  stu=student('zucc','Tony',20,'男')
  tu1.eat()  //Tony is eating
  

三、面试过程的面向对象

面试过程中面试官提到这个问题,他想听到的肯定是面向对象给编程带来的好处,也就是面向对象的特点,所以应该抓住三大特性来说,封装继承多态。在讲的过程中我想应该是分三个步骤来说:
①、面向对象的思想由来
②、对面向对象编程思想的理解
③、对三大特性的理解
1、首先面向对象是一种编程思想。在面向对象这种编程思想出现以前,主流的是以c为首的面向过程的语言(cpp可以认为既是面向过程也是面向对象就,但都不彻底),它更多的是按照计算机处理事务的思想来编写代码,被称为函数,这种编程思想对我们人类来说太复杂,不符合我们人类的思考方式,因此面向对象的编程思想孕育而生。
2、然后要理解面向对象,前提要理解什么是对象;万物皆对象这句话就能说明什么是对象,但这个太抽象,举个简单的例子,你是一个对象,我是一个对象,电脑是一个对象,房子是一个对象,宇宙是一个对象等等等,只要你能说的出来的东西都可以认为是一个对象;那么面向对象就可以理解为把任何事物抽象成一个对象来对待,之后再对这个对象进行相关的操作。
3、封装:将对象运行所需的资源封装在程序对象中——基本上,是方法和数据。对象是“公布其接口”。其他附加到这些接口上的对象不需要关心对象实现的方法即可使用这个对象。这个概念就是“不要告诉我你是怎么做的,只要做就可以了。”对象可以看作是一个自我包含的原子。对象接口包括了公共的方法和初始化数据。
继承:说到继承并不太陌生,继承可以使得子类具有父类的各种的公有属性和公有方法。而不需要再次编写相同的代码。在令子类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性和方法,使其获得与父类别不同的功能。
多态:按字面的意思就是“多种状态”,允许将子类类型的指针赋值给父类类型的指针。
重写:子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。
重载就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。

  • 10
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值