java ----------多态

来源:互联网 发布:居家家淘宝店铺 编辑:程序博客网 时间:2024/04/30 00:46

多态

相同的行为,不同的实现、

静态多态:在编译期,即确定调用哪个对象的哪个方法、

1.       方法的重载、

2.       单独使用方法的重写、

动态多态:动态绑定,重写实现、

                   (运行时)在运行中系统才能动态确定方法所指的对象。

                   父类的引用指向对象,调用父类被子类重写的方法、

引用

转型

自动转型(向上转型):绝对成功,没有风险。                  

1.        当父类的引用指向子类的对象时,该引用只能看到来自父类的属性行为,子类特有属性是看不到的。

2.        当父类的引用指向子类的对象时,该引用调用被子类重写的方法,得到的是子类重写后的效果。

父类 xx =new 子类();

 

强制转换(向下转型):不一定成功,有风险、(找不到完整的子类)

                                               只有在本类的引用指向本类的对象才能成功。(可以用关键字instanseof来规避强转风险)

                                               子类1  xx  = (子类2) new父类();//把父类强转成子类需要用instanseof判断哟!

                                              

                                               子类1和子类2的引用,指向是不同,所以这样的强转是不成功的、

                                               this.xx  instanceof xx (这是if判断用instanceof)为真返回true否则为false

                                               强转成功后,才能调用到子类特有方法。

                            多态参数 (用object做强转)

异构集合

             声明一个object的数组,里面可以存放不同类型的数据(object是所有数据类型的根类即超类也可父类)

                    Xx                                      object  object  object object  object object

                               指向这个集合

 


                                                                                                                                        

 

                                               int              String               float                      Boolean

 

                                                               其他引用                              其他引用

 

附:  String str1= “ ”;      //空串;             String  str= null;         //空                     这两个是表示的不同的,一个是空串,一个是空。

举例 :注册判断(必填)

两个判断:不能是空,也不是空串(顺序不能变,否则空指针异常) 最后在  用! 取反.


0 0