面向对象的基本概念

一、问题领域

  问题领域是指软件系统所模拟的真实世界中的系统。

二、对象

  对象是对问题领域中事务的抽象。对象具有以下特性:

  (1)万物皆对象

  (2)每个对象都是唯一的

  (3)对象具有属性和行为(数据成员和方法)

  (4)对象具有状态(属性的值不同)

  (5)对象都属于某个类

三、类 类型

     类是一组具有相同属性和行为的对象的抽象。对象模型中的类可看做是开发人员自定义的数据类型。对象是类的实例,类是对象的模板。

四、消息 服务

  提出请求的过程被称为发送消息。对象提供的服务室由对象的方法来实现的,因此发送消息实际上就是调用一个对象的方法。

五、接口

在Java语言中,接口有两种意思:

  一是指概念性的接口,即指系统对外提供的所有服务,在对象中表现为public类型的方法的声明。

  二是指用interface关键字定义的接口类型。

六、封住 透明

  封装是指隐藏对象的属性和实现细节,仅仅对外公开接口。一个手机良好的系统会封装所有的实现细节,把它的接口与实现星系地隔离开来,系统之间只通过接口进行通信。面向对象的编程语言主要通过访问控制机制来进行封装,这种机制能控制对象的属性和方法的可访问性。在Java语言中提供了一下4种访问控制级别。

  public:对外公开,访问级别最高。

  protected:只对同一个包中的类或者子类公开。

  默认(缺省):只对同一个包中的类公开。(同一个文件下)

  private:不对外公开,只能在对象内部访问。

七、抽象

  抽象是指从特定角度出发,从已经存在的一些事物中抽取我们所关注的特性,形成一个新的事物的思维过程。在面向对象的开发过程中,抽象体现在以下方面。

在Java语言中,抽象有两种意思:

  当动词时,就是指上述的抽象思维过程。

  当形容词时,可以用来修饰类和方法。

1 public abstract class Lighting{
2       public abstract void light();//这是一个抽象方法,没有实现体      
3 }

八、继承 扩展 覆盖

 在父类和子类之间同时存在着继承和扩展关系。子类继承了父类的属性和方法,子类还可以扩展出新的属性和方法,可以覆盖父类中方法的实现方式。 

 九、组合

  在一个新类的定义中使用其他对象,这就是组合。

 1 public class ReadingLamp{
 2   /** 灯泡 */ 
 3   private Bulb bulb;
 4   
 5   /** 电源线路 */
 6   private Circuit circuit;
 7 
 8   /** 构造方法 */
 9   public ReadingLamp(Bulb bulb, Circuit circuit){
10     this.bulb=bulb;
11     this.circuit=circuit;
12     bulb.setCircuit(circuit);
13     circuit.setBulb(bulb);
14   }
15 
16   /** 更换台灯的灯泡 */
17   public void setBulb(Bulb bulb){
18     this.bulb=bulb;
19     bulb.setCircuit(circuit);
20     circuit.setBulb(bulb);
21   }
22 
23   public void on(){circuit.switchOn();}
24   public void off(){circuit.switchOff();}
25 
26   public static void main(String args[]){
27     Bulb bulb=new Bulb();
28     Circuit circuit=new Circuit();
29     ReadingLamp lamp=new ReadingLamp(bulb,circuit);
30     lamp.on();
31     lamp.off();
32   }
33 }
public class Bulb{
  private Circuit circuit;
  public void setCircuit(Circuit circuit){
    this.circuit=circuit; 
  }
  public void light(){
    circuit.transportPower(); 
  }
  public void goOut(){System.out.println("go out");}
}
 1 public class Circuit{
 2   private Bulb bulb;
 3   public void setBulb(Bulb bulb){
 4     this.bulb=bulb; 
 5   }
 6   public void switchOn(){
 7     bulb.light();
 8   }
 9 
10   public void switchOff(){
11     bulb.goOut();
12   }
13  
14   public void transportPower(){System.out.println("transport power ");}
15 }

 

posted @ 2014-08-14 20:10  Phil Li  阅读(291)  评论(0)    收藏  举报