第十二周周总结 多态

java面向对象的四大特性
         继承  封装  多态 (抽象)
多态
一、四种表现形式  1.方法重载   2.方法重写   3.抽象类   4.接口

二、同一个对象 体现出来的多种不同形态(身份) 将一种行为表现出不同的效果
    要想实现多态的效果 需要现有继承方法

三、体现
             1.父类类型的引用 指向 子类的对象
                Person p = new Teacher();
             2.该引用只能调用父类中定义的属性或方法
             3.如果子类中将父类的方法重写,那么调取方法后执行的结果是子类重写之后的那个结果
                           如果父类与子类有同名的属性             执行父类的属性
                           如果父类与子类有同名的方法(重载)      执行子类重写之后的方法
             4.若想要调用子类中独有的成员
                           (强制类型转化) 造型 铸型 (向上/向下转型)
             5.造型时(强制向下转型时) 可能会出现一个运行异常
                            ClassCastException 造型 铸型 异常
                            如果想要避免造型的异常  可以用instance关键字来进行判断
                            对象  instanceof  类

 四、                       InputMismatchException               输入不匹配
                            NumberFormateException               数字格式化异常
                            ArrayIndexOutOfBoundsException       数组索引越界
                            NegativeArraySizeException           数组长度负数
                            NullPointerException                 空指针异常
                            ArithmeticException                  算数异常
                            ClassCastException                   造型异常 将对象的类型还原时 与真实类型不匹配
                            *Error                   栈内存溢出错误

 五、                                Object
                                     hashCode equals toString getClass ...
                                     Animal
                                     name属性  eat sleep
             Person                                        Pig 
             name属性  重eat  重sleep  独talk               name属性   重sleep
   Teacher                     Student
   name  重eat 独有teach        name属性 重talk  独study

                           Object o =new Teacher();
                           o.hasCode  o.toString
                           Animal a = (Animal)o;
                           a.hashCode();   a.toString();   a.name   a.eat()   a.sleep()
                           Person p = (Person)o;
                           p.hasCode();    p.toString();   p.name   p.eat()   p.sleep()                              
                           Teacher t = (Theacher)o;
                           t.hasCode();    t.toString();   t.name   t.eat()   t.sleep()

                           Student s = (Student)o;  //不可以哦,会出现ClassCastException 造型异常
上一篇:java 匿名对象


下一篇:JavaScript ES6类的概念