面向对象

来源:互联网 发布:手机淘宝怎么看信誉度 编辑:程序博客网 时间:2024/06/04 19:11
一.整体介绍整体目标:最大限度地增加程序的可拓展性基础:一切事物皆是对象;拓展对象之间的关系;确定方法调用者的执行期间1.重新定义一种新的数据结构class,来组织被抽取出来的相关对象的共同属性和功能2.拓展对象之间的关系:关联--继承--实现--聚合3.确定方法调用者的执行期间 1.一切事物皆是对象每个对象有自己的属性和功能。根据“物以类聚,人以群分”的法则,将相关对象的共同属性和功能抽取出来并组织在一种合适的数据结构里,即是类。相关的对象就是这个类的实例,共享这个类的属性和功能。代码层面:使用class关键字定义这种新的数据结构:将属性和功能组织在一起事物的属性映射为类的成员变量,事物的功能映射为类的方法问题1 为什么不能根据返回值类型来区分方法?因为有时调用方法并不关心其返回值,只关心其副作用。2..拓展对象之间的关系2.1 关联关系 (最弱的一种关系)代码层面:A类的方法使用B类作为形参 2.2 继承关系(A是一种B;一般和特殊)代码层面:A extends B单继承2.3 实现关系 A是一种B代码层面:A implements B多继承 2.4 聚合(AB的一部分)聚合=聚集+组合聚集:AB的非必要组成部分组合:AB的必要组成部分代码层面:在B类中使用A类作为其的成员变量 3.确定方法调用者的执行期间3.1 运行时对象信息或者反射 -- Reflection思想:根据程序运行时实际调用方法的对象类型来确定方法的调用者3.2 运行时类型信息或者Class对象-- Runtime Type Information二多态前提:继承;重写;父类引用指向子类对象并调用重写的方法定义:同样的方法在父类和子类中有不同的实现规则:允许父类引用指向子类对象; 不允许父类引用访问子类对象的字段代码层面:当程序中存在多态现象时,为了增加程序的可拓展性,规定:允许父类引用指向子类对象,针对父类引用进行和子类同名的方法调用,这样带来的问题有哪些?1.到底调用的是父类的方法还是子类的方法?采取的解决方案是动态绑定,即根据程序实际运行时创建的对象类型来确定,运行时绑定机制。2. 不允许父类引用访问子类对象的字段,此时如果想访问子类对象的字段,采取的解决方案是类型转换,由编译器保证正确地字段访问,是一种前期即编译期绑定机制


0 0
原创粉丝点击