Java面向对象之 多态
多态:
同一个对象,体现出来的多种不同的形态(身份),导致将
一种行为表现为不同的效果
要想实现多态的效果,需要先有继承关系
多态的体现:
父类的引用,指向子类的对象 如Teacher继承Person
//原来创建对象的时候
Teacher t = new Teacher();//这个老师是个老师
多态的体现:
Person p = new Teacher();//这个人是个老师
p只能调用父类中定义的属性和方法,体现出来的是人的身份
强制向下转型时可能会出现一个运行时异常:ClassCastException(造型异常)
如果想要避免出现运行时异常可以运用instanceof关键字判断当前引用指向的是不是后面的类型
见到的运行时异常:inputMissMathException 输入不匹配
NumberFormatException数字格式化异常
ArrayIndexOutOfBoundsException数组索引越界
NegativeArraySizeException 数组长度负数 new数组的时候,给的长度必须时正数的。负数不行
NullPointerException空指针异常 Person p = null;
ArithmeticException 算数异常 1/0;
ClassCastException 造型异常 将对象的类型还原时,与真实对象不匹配
StackOverflowError栈内存溢出错误
Animal--父类
name属性,eat sleep
Person Pig
name属性 重eat 重sleep 独speak name属性 重sleep
Teacher Student
name属性 重eat 独有teach name属性 重speak 独study
Object o = new Teacher();
o.hashCode o.toString o.equals o.wait o.natify o.natifyAll o.finalized
造型
Animal a = (Animal)o;
a.hashCode a.toString a.name a.eat a.sleep
Person p = (Person)a;
p.name p.eat p.sleep
Teacher t = (Teacher)p;