标签:
什么是面向对象?在程序设计方法中,面向对象是相对于面向过程而言的,在面向过程的方法中,每一个程序都是一个独立的个体,独自开发,独自实现,每一个程序都是从开始到结束整个生命周期中都是独立不可复制的,如同一一道精美的菜品,从准备到完成是一个独立的过程,火熄菜成,虽味道鲜美,但制成后很难再去修改,同样也难以扩大规模成批量生产。
而在面向对象中,程序的实现被拆分为一个个模块,比起面向过程的设计方法它更像是在一个工厂中生产出许多功能迥异的零件,最后再将这一个个零件组装起来,即便在生产中需要更新升级产品,这个程序也不必全部打碎从头开始,只需改变其中某一部分代码块,而不用改变其整体架构。
两相对比,不难看出面向对象的设计方法比面向过程更加具有效率,也提高了代码的复用率。面向对象让代码代码更加高效、优雅,系统更加健壮、稳定。
那么什么是对象呢?
在自然界中,每一个生灵都是一个独立个体,或者说是一个独立的对象。在生物学,每个生命体对象都有其所分属的种,种之上有属,属之上还有科目纲门界,对象之间可以彼此相似,但不尽相同,由此便可引出面向对象的三大特性。
package Demo; public class Person { public static void main(String[] args) { System.out.println("我叫张三"); } }
1.封装性
对象是属性和行为相结合的整体,比如张三是一个小伙子,他的姓名、性别、年龄是他的属性,而他可以搬砖则是其行为(功能)。他的属性和行为在张三这个对象中不可 分割,而他的姓名、年龄等属于能够为外界知道和使用的,却不能更改,而虽然能够让张三去搬砖,却不能知道张三在搬砖时所发生的剧烈的心理活动。
这便是封装性在程序设计中表现的两大特性:1.把描述对象属性的变量以及实现对象功能的方法结合在一起,定义为一个程序单位,并保证外界不能随意更改其内部的属性 值,也不能任意调动其内部功能;2.为封装在一个整体内变量方法规定了不同了不同级别的可见性或访问权限。
1 public class Person { 2 3 private String mName; 4 private String mSex; 5 6 public Person(String name, String sex) { 7 this.mName = name; 8 this.mSex = sex; 9 System.out.println("我叫" + mName + ",我是个" + mSex + "人"); 10 } 11 12 public void function() { 13 System.out.println("我可以搬砖"); 14 } 15 16 }
1 public class Demo { 2 3 public static void main(String[] args) { 4 Person P = new Person("张三", "男"); 5 P.function(); 6 } 7 8 }
2.继承性
如同生物学定义的界门纲目科种属,张三在其是一个独立的个体之前首先是一个人,他具有人的普遍属性和行为,由此他是先具有了人这个类的普遍属性和行为,后再增加 了张三特有的属性和行为。
这样,被继承的类称为超类或父类(人),而经继承长生的类称为子类或派生类(张三),由此父类所描述过的属性及行为,即已定义的变量和方法,在继承产生的类中完 全可以使用。这种机制大大增加了程序的可复用性,提高了软件开发效率,降低了程序的容错率,也为程序的修改提供了便利。
在Java中每一个子类只允许继承一个父类,同时可以通过接口(interface)实现多个抽象类,即“单继承多实现”。
3.多态性
多态的是面向程序设计的有一个重要特征,允许程序出现重名现象,好比这次张三开始玩cosplay了,他可以cos成萝莉,可以cos成大叔。Java语言中有方法重载和对象多 态两种形式的多态。
1.方法重载:在一个类中,允许多个类使用同一个名字,但方法的参数不同,完成的功能也不同。
2.对象多态:子类对象可以与父类对象进行相互的转换,而且根据其使用的子类的不同完成的功能也不同。
多态的特性使程序的抽象程度和简捷程度更高,有助于开发人员对程序分组协同开发。
标签:
原文地址:http://www.cnblogs.com/aladdin-light/p/5479836.html