---------------------- android培训、java培训、期待与您交流! ---------------------
JavaSE_10 笔记
Java语言基础之 多态 内部类 匿名内部类
1、 面向对象特征三之 多态
① 体现形式:父类或接口类的引用指向了子类型对象;就是一个对象对应着不同类型。
② 多态的好处:
提高了代码的扩展性,前期定义的代码可以使用后期的内容。
③ 多态的弊端:
前期定义的内容不能使用后期子类的特有内容。
③多态实现的两个前提:
必须有继承关系:继承或实现;
必须有覆盖;
④多态的类型判断:
public static void method()
{
if(a instanceof Cat) // instanceof用于判断对象的具体类型,只能用于引用数据类型判断
{
Cat c=(Cat)a;
c.catchMouse();
}
}
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(){} // 覆盖父类的方法
}
2012/9/03 By Mary_k