面向对象的基本概念
一、问题领域
问题领域是指软件系统所模拟的真实世界中的系统。
二、对象
对象是对问题领域中事务的抽象。对象具有以下特性:
(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 }

浙公网安备 33010602011771号