1、实质
一个事物有多种状态。
eg:狗的吃,既属于狗的功能也是属于动物的功能。(一个对象有两种类型)
2、好处
提高了代码的扩展性,前期定义的代码可以使用后期的内容。
3、弊端
前期定义的内容不能使用后期的特有的功能
4、条件
(1)必须有关系,继承、实现
(2)必须有覆盖
5、向上转型
(1)自动类型提升,将子类提升为父类
animal a=new cat();
产生了局限性,此时cat的特有功能不能被访问
(2) 作用:可以限制对特有功能的访问
如果还要用cat的具体 功能呢?向下转型
6、向下转型
cat c=(cat) a;
将animal a转换成c
作用:使用子类中特有的功能
对于转型,自始至终都是子类对象做着变化。
7、instanceof
用于判断对象的具体类型,只能使用在引用数据类型的判断。
eg:
if (a instanceof cat) ps. cat处可以使对象也可以是接口
{
cat c=(cat) a;
c.catchmouse();
}