面相对象,关于对象

1.1对象的抽象过程(Java所基于语言之一的五个特性)

1)万物皆对象。 将对象看做是一个特别的变量,它是一个可以存储数据的东西,除此之外,你还可以要求它在自身上进行操作。理论上而言,万物皆对象,可以抽取待求解的任何概念化构件,例如猫、狗、建筑物、衣服等等。我们可以将他们表示成为程序中的对象。
2)程序是对象的集合,他们通过发送消息来告知彼此所需要做的。要想请求一个对象,就必须要给这个对象发送消息。也就是说,可以把消息看成是对这个对象的请求调用。
3)每个对象都有自己的由其他对象所构成的存储。换句话说就是可以创建包含现有对象包的方式来创建新的对象。
4)每个对象都拥有其自己的类型。通俗来讲就是,每个对象都是某个类的一个实例,“类”和“类型”即同义词,每个类区别于其他类的特性就是“可以发送什么样的消息给它”。
5)某一特定类型的所有对象都可以接受同样的消息。例如“圆形”对象同时也是“几何形”类型的对象,所以一个“圆形”对象必定能够接受发送给“几何形”对象的消息。这意味着可以编写与“几何形”交互并且自动处理与几何形性质相关的事物的代码。这种可替代性oop(面向对象的程序设计)最强有力的概念之一。

1.2每个对象都有一个接口

  • 创建抽象数据类型(类)是面向对象程序设计的基本概念之一
  • 抽象数据类型的运行方式与内置类型几乎完全一致:你可以创建某一类型的变量(对象或者实例),然后操作这些变量。
  • 每个类的成员都有某种共性,因为类描述了具有相同特性(数据元素)和行为(功能)的对象集合,所以一个类基本上就是一个数据类型。
  • 一个类如果被建立,就可以随心所欲的创建类的任意个对象
  • 例如:我们可以创建一个类Light,特定Light的对象是It,可以向Light对象发出请求就是打开关闭等等各种操作
Light It = new Light();
It.on();

1.3每个对象都提供服务

  • 可以将对象想象为“服务提供者”,程序本身将向用户提供服务,它将通过调用其他对象提供的服务来实现这一目的。
  • 将对象看做是服务的提供者的好处就是:它有助于提高对象的内聚性。高内聚是软件的基本质量要求之一:这意味着一个软件构件(例如一个对象,当然它也有可能指一个方法或者是对象库)的各个方面“组合”的很好。
  • 将对象作为提供服务者看待是一件伟大的简化工具,人们在设计对象时面临的问题就是将所有功能都塞进一个对象中。但是你会发现这些功能对于一个对象来说太多了,你需要三个甚至更多的对象,因此我们可以设计三个甚至更多的对象,内一个对象都有它所能提供服务的内聚的集合。在良好的 面向对象设计中,每个对象都能很好的完成一项任务,不试图做更多的事情。

1.4 三个关键字public、private、protected的边界设定

  • public:表示紧随其后的元素对任何人都是可用的
  • private:表示出了类型创建者和类型的内部方法之外的任何元素都不能访问
  • protected:protected关键字与private作用相当,差别仅仅在于继承的类可以访问protected成员,但是不能访问private成员
  • Java还有一种默认的访问权限,当没有使用前面提到的任何访问的指定词的时候,它将会发生作用。这种权限通常被称为包访问权限,因为在这种权限下,类可以访问在同一个包(库构件)中的其他类成员,但是在包之外,这些成员如同指定了private一样。

1.5复用的具体实现

  • 代码复用是面向对象程序设计语言的最了不起的优点之一。
  • 最简单的复用某一个类的方式就是使用该类的一个对象,此外也可以将那个类的一个对象置于一个新的类中。我们称其为“创建一对象成员”,新的类可以由任意数量、任意类型的其他对象以任何可以实现新的类中想要的功能的方式组成。因为是在使用现有的类实现新的类,因此这种概念被称为组合,如果组合是动态发生的,那么它通常被称为聚合。组合通常被视为拥有关系(就像我们通常说的汽车拥有引擎一样)。
  • -

1.6继承

  • 当源类(被称为基类、超类或父类)发生变动的时候,被修改的“副本”(被称为导出类、继承类或子类)也会反应出这些变动
  • 有两种方法可以使基类和导出类产生差异。一种方法特别直接,是直接在导出类中添加新的方法,但是这些新方法不是基类接口的一部分,这就意味着基类并不能满足你的所有的需求,因此你需要添加更多新的方法;另外一种方法也是比较重要的一种方法就是改变现有基类。这种行为被称为覆盖,想要覆盖某个方法,可以直接在导出类中创建该方法的新定义就可以了。

1.7前期绑定和后期绑定

  • 前期绑定:前期绑定又称为静态绑定,意思是在程序执行前已经被绑定(也就是说在编译的时候已经确定这个方法是哪一个类中的方法),此时由编译器或者其他连接程序实现。针对Java简单的可以理解为程序编译期的绑定;特别说明的是,Java当中的方法只有final、static、private和构造方法是前期绑定。
  • 后期绑定:后期绑定又称为动态绑定。是在运行时根据具体的对象类型进行绑定。若一种语言实现了后期绑定,同时必须提供一些机制,可在运行期间判断对象的类型,并分别调用适当的方法。也就是说,编译器此时依然不知道对象的类型,但方法调用机制能自己去调查,找到正确的方法主体。不同的语言对后期绑定的实现方法是有所区别的。但我们至少可以这样认为:它们都要在对象中安插某些特殊类型的信息。
    动态绑定的过程:
    虚拟机提取对象的实际类型的方法表;
    虚拟机搜索方法签名;
    调用方法。
  • 在Java中动态绑定是默认行为,不需要添加额外的关键字来实现多态。
  • -

1.8异常处理

  • 异常处理将错误直接置于编程语言中,有时甚至置于操作系统中。异常是一种对象,它从出错地点被“抛出”,并被专门设计用来处理特定类型错误的相应的异常处理器“捕获”,异常处理就像是与程序正常执行路径并行的,在错误发生时执行的另外一条路径。不会干扰正常代码,异常提供了一种从错误状况进行可靠恢复的路径。现在不再是只能退出程序,你可以进行校正。
  • 异常处理不是面向对象的特征,尽管在面向对象语言中异常常被表示成一个对象,异常在面向对象语言之前就已经存在了。

猜你喜欢

转载自blog.csdn.net/lm_0921_miaodameng/article/details/80953198