Java面向对象思想之 多态

允我心安 提交于 2020-01-29 00:24:19

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;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!