面向对象的特征_Java面向对象的特征有哪些方面

面向对象是一种程序的设计方法,或者说它是一种程序设计范型,其基本思想是适用对象,类,封装,继承,消息等基本概念来进行程序设计。

它是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域(显示实际)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位(而不是用一些与现实世界中的事物相关比较远,并且没有对应关系的其他概念来构造系统)。这可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。

它可以有不同层次的理解:

从世界观的角度可以认为:面向对象的基本哲学是认为世界是各种各样具有自己运动规律和内部状态的对象所组成的;不同对象之间的相互作用和通讯构成了完整的现实世界,直接通过对象及其相互关系来反映世界。这样建立起来的系统才能符合现实世界的本来面目。

从程序设计角度来看:面向对象的程序设计语言必须由描述对象及其相互关系的语言成分。这些程序设计语言可归纳为一下几类:系统中一切皆为对象;对象是属性及其操作的封装体;对象可按其性质划分为类,对象成为类的实例;实例关系和继承关系是对象之间的静态关系;消息传递是对象之间动态联系的唯一形式,也是计算的唯一形式;方法是消息的序列。

面向对象的编程语言有封装、继承、抽象、多态等四个主要特征。

1.封装:

封装是保证软件部件具有优良模块性的基础,封装的目标就是要实现软件部件的“高内聚,低耦合”,防止程序相互依赖性而带来的变动影响。在面向对象的编程语言中,对象是封装的最基本单位,面向对象的封装比传统语言的封装更为清晰、更为有力。面向对象的封装就是把描述一个对象的属性和行为的代码装在一个“模块”中,也就是一个类中,属性用变量定义,行为用方法定义,方法可以直接访问同一个对象中的属性。通常情况下,只要记住让变量和访问这个变量的方法放在一起,将一个类中的成员变量全部定义成私有的,只有这个类自己的方法才可以访问这些成员变量,这就基本上实现对象的封装,就很容易找出要分配到这个类上的方法了,就基本上算是会面向对象的编程了。把握一个原则:把对同一事物的操作方法和相关的方法放在同一个类中,把方法和它操作的数据放在同一个类中。

2.抽象

抽象就是找出一些事物的相似和共性之处,然后将这些事物归为一个类,这个类只考虑这些这些事物的相似和共性之处,并且忽略与当前主题和目标无关的那些方面,将注意力集中在与当前目标相关的方面。例如,看到一只蚂蚁和大象,你能够想象出他它们的共同之处,那就是抽象。抽象包括行为抽象和状态抽象两个方面。例如,定义一个Person类,如下:

ac72a629ccf5e9ec09b303e55f919787.png

人本来就是很复杂的事物,有很多方面,但是因为当前系统只需要了解人的姓名和年龄,所以上面定义的类中只包含姓名和年龄,所以上面定义的类中只包含姓名和年龄这两个属性,这就是抽象,使用抽象可以避免考虑一些与目标无关的细节。我对抽象的理解就是不要用显微镜去看一个事物的所有方面,这样涉及的内容就太多了,而是善于划分问题的边界,当前系统需要什么,就只考虑什么。

3.继承

在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并可以加入若干新的内容,或修改原来的方法使之更适合特殊的需要,这就是继承。继承是子类自动共享父类数据和方法的机制,这是类之间的一种关系,提高了软件的可重用性和可扩展性。

4.多态

多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向那个类的实例对象,该引用变量发出的方法调用到底是哪个类中的实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才能确定具体的类,这样,不用修改源代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改源代码就可以改变程序运行时所绑定的得具体代码,让程序可以选择多个运行状态,这就是多态性。多态性增强了软件的灵活性和扩展性。例如,下面代码中的UserDao是一个接口,它定义引用变量userDao指向的实例对象由daofcatory.getDao()在执行的时候返回,有时候指向的是UserjdbcDao这个实现,有时候指向的是UserHibernateDao这个实现,这样,不用修改源代码,就可以改变userDao指向的具体实现类,从而导致userDao.insertUser()方法调用的具体代码随之改变,即有时候调用的是UserjdbcDao的insertUser()方法,有时候调用的是UserHibernateDao()方法:

d645180da5f28e5098f7052886f76add.png

比喻:人吃饭,你看到的是左手还是右手?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值