您的位置:首页 > 编程语言 > Java开发

面向对象的java编程及面向对象的特征

2016-03-24 13:16 288 查看
在程序设计中,有三个问题要思考,这三个问题也是可以探究编程本质的问题。

1.做软件,编程序究竟是在做什么?程序设计的本质是什么?

做软件,写代码,是把现实中的事情和需求通过计算机和网络来完成,但是又不能完全按照现实中的事情来做,所以要把现实生活中的东西抽象

到计算机中来做。程序设计者要做的就是“抽象”。

2.应该抽象什么?

计算机世界中的每样东西都是现实中抽象做出来的,比如计算机的文本编辑器,其实就是现实中的文本,all of  them都是编程人员通过对象时的抽象得到的。

抽象有两种:1.对数据的抽象;2.对业务逻辑的抽象。

3.应该以什么样的抽象为导向?

“面向”即是导向。以什么样的抽象为导向,在开发中是拿数据去包含业务逻辑,还是用业务逻辑来包含数据,这就需要解决以哪种抽象为导向的问题。

面向过程是以过程,也就是业务逻辑的抽象为导向。该模式中,算法是第一位。

面向对象,是以数据抽象为导向,数据就是一个一个对象。定义的类实际上是一个数据类型,而数据类型包含方法,方法就是业务逻辑,是可以顺序执行的代码块。在面向对象的编程中,使用数据封装业务逻辑。

在java中,看到的是类,java代码由若干个类组成。对象和对象之间的数据访问是间接通过接口来进行的,接口隐藏了函数和数据类型的实现。数据结构和内部函数发生变化时,变化范围限制在内部的范围内,具有相对稳定的作用。

面向对象技术的主要特点:

1.对象是通过现实中具有相同特性事务的抽象;

2.对象中包含了一定的属性和方法;

3.对象的属性用来表示其具有的相同信息;

4.对象之间的作用可以通过接口来完成。

面向对象的特征有哪些?

面向对象是一种程序的设计方法,基本思想是使用 对象,类,继承,封装,消息等基本概念来进行程序设计。从程序设计的角度来看,面向对象的程序设计语言必须有描述对象及对象之间的语言成分。这类语言可以归纳为以下几类:

系统中一切皆为对象;对象是属性和对应操作的封装体;对象按性质划分为,类,对象成为类的实例;实例关系和继承关系是对象之间的静态关系,消息传递是对象之间动态联系的唯一形式;方法是对象的序列。

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

1.封装:

封装的目标是实现软件内部的 高内聚,低耦合 防止程序相互依赖带来的变动影响。对象是封装的最基本单位。面向对象的封装是把描述一个对象的属性和行为的代码封装到一个 “模块”中,即一个类中,属性用变量定义,行为用方法定义,方法也可以直接访问同一个对象的属性。

2.继承:

在定义和实现一个类的时候,可以一个已存在的类的基础上进行,把这个已存在的类所定义的内容作为自己的内容,并加入内容或修改原来的方法(方法的重写),是指更适合当前的需求,这就是继承。继承是共享父类数据和方法的机制,提高了软件的可用性和课拓展性。记住“儿子不能比父亲更坏哟~”

3.抽象:

抽象就是找出一些事物的相似和相同之处,然后将ta们归为一个类,这个类只考虑该类事物的相似和共性之处,
4000
集中关注和当前目标有关的方面,忽略其他方面。抽象分为行为抽象和状态抽象。

4.多态:

多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时不确定,而是在程序运行期间才确定。

多态顾名思义,就是一个对象,多种形态。多态可以有多种理解,一种是方法的多态,即方法的覆盖和重载,这种多态提的比较少,大多数讲的多态是指对象的多态。

多态的理解,主要是客观存在和主观认识之间关系的理解问题。实质是客观存在不能左右主观认识,主观认识也不能改变客观存在,多态主要由这两个定理构成:

1.当把子类对象当做父类对象来看时,只能调用父类中原有定义的属性和方法,子类自己拓展的属性和方法没法用。

2.当把子类对象当做父类对象来看时,如果子类重写了父类中的方法,则调用该方法时,调用的是子类重写后的方法。

具体理解:

在第一个定理中,假设将一只猫比作一只宠物,并没有把它当做猫看待(此时只认为它是宠物,不确定ta是猫),这个时候只认为ta是一只宠物,ta具有宠物的属性和方法。这个时候,不会去调用ta他有的方法,也无从得知ta特有的方法,即符合一般认知习惯;

第一个定理中,讲了子类自己拓展的属性和方法不够调用,但是定理二中调用的方法不是ta特有的方法,而是重写的方法,和定理1看似矛盾,实际并不矛盾。这就好比,把猫当做宠物,但是猫并不会因为把ta当做宠物而改变为吃草,ta还是喜欢吃鱼,并不会因为人把ta看做什么而产生影响。总结起来就是主观认为不会影响客观存在。

instanceof 运算符

一个子类可以看成父类对象,即子类对象转换成父类对象不需要强制转换,但将父类对象看成子类对象就需要进行强制转换了。强制转换有严格的限制,有时候需要判断父类对象是不是该子类的对象,此时就用到了 instanceof 运算符。

if(子类对象 instanceof 父类对象){

//进行对应方法的强制转换,运行子类特有的方法

}else

{

//相应的操作

}

注意:相应的资料来自java实例精通和java手册。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: