参考 抽象类和接口:http://blog.csdn.net/yyyandroid/article/details/7680436
对象的多态性:(JAVA中最重要的一个部分)
1、方法的重载和方法的覆盖实际上属于多态的一种体现
2、真正的多态性还包含了一种称为对象多态行的概念
3、对象多态性:子类和父类对象的相互转换关系
向上转型:父类 父类对象 = 子类实例 -->自动完成
向下转型 :子类 子类对象=(子类)父类实例 -->强制完成
常见异常:java.lang.ClassCastException (类转换异常,根本原因是两个没有关系的类进行相互的对象转换操作)此异常实际上是继NullpointerExption之后,第二个最容易出现的异常。
4、instanceof类的用法:(判断是否是另一个类的实例)
对象 instanceof 类 ——>返回boolean类型的数据,值就是true或false
class DemoA{ public void fun1(){ System.out.println("-A---fun1----"); } public void fun2(){ fun1(); } } class DemoB extends DemoA{ public void fun1(){ System.out.println("-B---fun1----"); } public void funB2(){ System.out.println("-B---funB2----"); } } class DemoC extends DemoA{ public void fun1(){ System.out.println("-C---fun1----"); } public void funC2(){ System.out.println("-C---funC2----"); } } public class Demo { public static void main(String args[]){ getAllFun(new DemoB()); getAllFun(new DemoC()); getAllFun(new DemoB()); } public static void getAllFun(DemoA childClass){ childClass.fun2(); if(childClass instanceof DemoB){ DemoB demoB = (DemoB) childClass; demoB.funB2(); } if(childClass instanceof DemoC){ DemoC demoC = (DemoC) childClass; demoC.funC2(); } } } //结果: //-B---fun1---- //-B---funB2---- //-C---fun1---- //-C---funC2---- //-B---fun1---- //-B---funB2----
5、在继承关系中,父类的设计很重要。只要父类设计合理了,则代码开发就非常简便了