面向对象的三大特点


(此图来源于网络)

1、封装

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

[java]  view plain  copy
 print ?
  1. <pre name="code" class="java">  
[java]  view plain  copy
 print ?
  1. interface Display{  
  2.     public void display();  
  3. }  
  4.   
  5.  class Person implements Display{  
  6.     private int age; //属性的隐藏  
  7.     protected String name;  
  8.       
  9.     public Person(int age, String name){  
  10.         this.age = age;  
  11.         this.name = name;  
  12.     }  
  13.       
  14.     public int getAge() {  
  15.         return age;  
  16.     }  
  17.     public void setAge(int age) {  
  18.         this.age = age;  
  19.     }     
  20.     public void display(){  
  21.         System.out.println("age:"+age+",name:"+name);  
  22.     }  
  23. }  
方法隐藏的典型例子是单例模式。

 

2、继承

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值