第十二周周总结 多态
Posted shsy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十二周周总结 多态相关的知识,希望对你有一定的参考价值。
java面向对象的四大特性
继承 封装 多态 (抽象)
多态
一、四种表现形式 1.方法重载 2.方法重写 3.抽象类 4.接口
二、同一个对象 体现出来的多种不同形态(身份) 将一种行为表现出不同的效果
要想实现多态的效果 需要现有继承方法
三、体现
1.父类类型的引用 指向 子类的对象
Person p = new Teacher();
2.该引用只能调用父类中定义的属性或方法
3.如果子类中将父类的方法重写,那么调取方法后执行的结果是子类重写之后的那个结果
如果父类与子类有同名的属性 执行父类的属性
如果父类与子类有同名的方法(重载) 执行子类重写之后的方法
4.若想要调用子类中独有的成员
(强制类型转化) 造型 铸型 (向上/向下转型)
5.造型时(强制向下转型时) 可能会出现一个运行异常
ClassCastException 造型 铸型 异常
如果想要避免造型的异常 可以用instance关键字来进行判断
对象 instanceof 类
四、 InputMismatchException 输入不匹配
NumberFormateException 数字格式化异常
ArrayIndexOutOfBoundsException 数组索引越界
NegativeArraySizeException 数组长度负数
NullPointerException 空指针异常
ArithmeticException 算数异常
ClassCastException 造型异常 将对象的类型还原时 与真实类型不匹配
StackOverflowError 栈内存溢出错误
五、 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 造型异常
以上是关于第十二周周总结 多态的主要内容,如果未能解决你的问题,请参考以下文章