面向对象的三大特点

来源:互联网 发布:win10网络断开连接 编辑:程序博客网 时间:2024/05/17 07:57

面向对象的三大特点

转载请注明出处:http://blog.csdn.net/lvsaixia/article/details/41085555
(此图来源于网络)

1、封装

           封装是面向对象最重要的特征之一,封装就是指隐藏。
           对象隐藏了数据(例如private属性),避免了其他对象可以直接访问使用对象属性而造成耦合度过高,过度依赖。同时也可以阻止其他对象随意修改对象内部的数据而引起对象的不一致,要访问对象的数学,必须使用对象提供的相关函数。
           对象隐藏方法的实现细节。
           a)使用者只能使用公有方法而不能使用那些受保护的或者私有的方法,你可以修改这些非公有的方法而不影响使用者。
           b)可以隐藏具体类型,使用者不必关心对象的真正的类型就可以使用它们(依赖于接口或者抽象带实现)。
           c)使用者无需关系那些与使用者无关的类,减少耦合。
           由于只能通过公用接口和方法是用他们,这样,客户程序就不能使用那些受保护的方法(如采用private 或protected关键字修饰的方法),而你可以随意改变这些方法,并不会影响使用者,这样降低了耦合度。

<pre name="code" class="java">
interface Display{public void display();} class Person implements Display{private int age; //属性的隐藏protected String name;public Person(int age, String name){this.age = age;this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public void display(){System.out.println("age:"+age+",name:"+name);}}
方法隐藏的典型例子是单例模式。

2、继承

          继承是面向对象的又一重要特征。继承可以使用不同的类的对象具有相同的行为;为了使用其他类的方法,我们没有必要重新编写这些旧方法,只要这个类(子类)继承包含的方法的类(父类)即可。
          从下往上看,继承可以重用父类的功能;从上往下看,继承可以扩展父类的功能。
<pre name="code" class="java">class Student extends Person{ //继承private int ID;public Student(int age, String name, int ID) {super(age, name);this.ID = ID;} public void display(){System.out.println("age:"+this.getAge()+",name:"+this.name + ",ID:"+this.ID);} }

3、多态
         多态可以使我们以相同的方式处理不同类型的对象。我们可以使用一段代码处理不同类型的对象,只要他们继承/实现了相同的类型。这样,我们没有必要为每一种类型的对象撰写相同的逻辑,极大的提高了代码的重用。
在上面的两个类中,我们不需要知道具体对象的类型,通过接口我们可以调用display()函数,显示相应对象的信息。
  
参考:《漫谈设计模式 从面向对象开始》 刘济华 清华大学出版社
转载请注明出处:http://blog.csdn.net/lvsaixia/article/details/41085555
0 0