本帖最后由 小康康 于 2012-10-4 09:37 编辑
1、 面向对象特征三之 多态
① 体现形式:父类或接口类的引用指向了子类型对象;就是一个对象对应着不同类型。
② 多态的好处: 提高了代码的扩展性,前期定义的代码可以使用后期的内容。
③ 多态的弊端: 前期定义的内容不能使用后期子类的特有内容。
④多态实现的两个前提: 必须有继承关系:继承或实现; 必须有覆盖;
⑤多态的类型判断:
2、多态之成员变量的特点:
①注意成员变量没有覆盖,所以若子父类都定义了,发生的是两个变量。 比如: Fu f=new Zi() ; f.num ; // 只会用父类的num变量,若父子没有,报错,也不会用子类的num成员。
②特点:(注意:覆盖只发生在成员函数上,不会发生在成员变量上) 编译时:看父类中是否有调用的成员变量,若有,编译通过,没有,编译失败。 运行时:看父类中是否有调用的成员变量,并运行该所属类中的成员变量。 简单说:编译和运行都参考等号左边。
3、多态之非静态成员函数的特点(成员函数会发生覆盖,即一模一样函数,只能存在一个,覆盖) 编译时:看父类中是否有调用的成员变量,若有,编译通过,没有,编译失败。 运行时:只看本类中是否用调用的函数。 简单说:编译看左边,运行看右边。
4、多态之静态函数特点: (静态方法是 隶属于对象的,哪个对象调用就用哪个对象的函数) 编译时:看父类中是否有调用的static方法。 运行时:看父类中是否有调用的static方法。 简单说:编译和运行都参考等号左边。
5、面向对象之 内部类 特点:
①内部类可以直接访问外部类中的成员,包括Private。因为内部类持有了外部类的引用, 外部类名.this ;
②外部类要访问内部类中的成员必须要建立内部类对象。
③若内部类成员定义成了static那么,该类也必须是static。 使用场合: 分析事物时,发现该事物描述中还有事物,而且这个事物还在访问被描述事物的内容,那么该被描述的事物要被定义成内部类来描述。
6、匿名内部类:
前提是必须继承或实现一个类,其实就是一个子类对象。 new Fu() // 等同于 class Inner extends Fu ; { Void show(){} // 覆盖父类的方法 }
|