Java面向对象特性理解

面向对象的程序设计很接近于我们人类自然的思维,相对于面向过程的程序设计,它具有更好的可扩展性和可维护性,使我们编写的代码更健壮!
面向对象主要有四大特性:封装、抽象、继承和多态。各自定义:
[color=red]封装:[/color]在面向对象语言中,封装特性是由类来体现的,我们将现实生活中的一类实体定义成类,其中包括属性和行为(在Java中就是方法),就好像人类,可以具有name,sex,age等属性,同时也具有eat(),sleep()等行为,我们在行为中实现一定的功能,也可操作属性,这是面向对象的封装特性;
[color=red]抽象:[/color]抽象就是将一类实体的共同特性抽象出来,封装在一个抽象类中,所以抽象在面向对象语言是由抽象类来体现的。比如鸟就是一个抽象实体,因为抽象实体并不是一个真正的对象,它的属性还不能完全描述一个对象,所以在语言中体现为抽象类不能实例化;
[color=red]继承:[/color]继承就像是我们现实生活中的父子关系,儿子可以遗传父亲的一些特性,在面向对象语言中,就是一个类可以继承另一个类的一些特性,从而可以代码重用,其实继承体现的是is-a关系,父类同子类在本质上还是一类实体;
[color=red]多态:[/color]多态就是通过传递给父类对象引用不同的子类对象从而表现出不同的行为,多态可为程序提供更好的可扩展性,同样也可以代码重用。
下面谈谈它们之间的联系:
因为在Java是通过类的模板来定义出对象实例,所以自然而然就将对象封装了,这在任何面向对象的语言都很容易体现!
我觉得在抽象、继承和多态当中,继承是基础。因为如果没有继承这种机制,就没有父类和子类的概念,抽象和和多态根本就无法体现。正是有了继承这种机制,我们可以就抽象实体定义成抽象类,从而具体的实体可以继承抽象类来实现,不需要重复写共同的特性,抽象特性也就体现出来了;也正是因为有了继承机制,才有了父类和子类的概念,从而父类对象引用参数通过传递子类对象体现出不同的行为,实现了多态。继承和多态可明显增加代码重用,减少代码量,同时利用多态可扩展性也增强。
在Java中,抽象是以两种方式表现:Abstract Class和Interface。Java就是基于接口的编程,在我们编写代码时不知道如何选择应该使用抽象类还是接口,它们虽然看起来没多大区别,但在设计上可以明显看出它们之间的本质区别,具体可以参照[url]http://software.ccidnet.com/art/322/20030312/40306_1.html[/url],那里有对如何选择抽象类和接口的解释。其实我们在选择抽象类和接口时,要记住这样的原则,抽象类是定义一类实体的共同特征,其父类和子类在本质上还是同一类实体,是is-a关系,比如鸟和燕子,抽象类不仅意味着定义特定的行为,而且意味着定义实现的模式;而接口只是定义行为的模型,不同的实体可以implements不同的行为,同时接口要满足ISP原则,即不同实体的行为不能定义在同一接口中,它其实体现的是like-a的关系。
在我们进行面向对象的程序设计时,要转变我们的思维,尽量设计得和现实中很接近,对于公共功能尽量定义到抽象类或接口中,方法中的参数一般使用父类,当然这需要经验的积累,不是一朝一夕的事。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值