方法的多态
- 重载。方法名相同,其他可以不同
- 重写。父类子类的方法名相同。访问权限不能更小
重写:
- 继承了父类
- 父类方法不能满足
- 子类、父类这个方法的方法名相同
- 参数相同
- 返回类型相同
- 访问权限不能更小
- 抛出的异常不能更大
一、多态
Animal bird2 = new Bird("2niao", 4);
bird2.sing();
bird2.sing()
,由于bird2
被定义为是Animal
类型,而Animal
类型是没有sing()
这个方法的,因此会报错。解决办法是,把这个bird2
强制转换成Bird类型。
((Bird)bird2).sing();
可以先用 isinstanceof来进行判断
二、重写父类
父类引用调用子类对象,是用的子类的方法。
Dog类,Bird类都有eat()方法,他们都继承了Animal类,于是就重写了父类的方法。
Animal bird3=new Bird("niao3", 23);
bird3.eat();
即使bird3被定义为Animal类型,eat()依然输出:
niao3正在吃虫子