父类类型 变量名=new 子类对象;
变量名.方法名( );
除了非静态方法是编译时看左边,运行时看右边;其余都是编译时看左边,运行时也看左边
多态的应用场景:
- 变量多态-->意义不大,继承也能实现
- 形参多态:方法的参数类型为父类类型,这样参数就可以接收父类类型的对象或者它所有的子类对象(方法名 (父类类型 参数)
- 返回值多态:如果返回值类型为父类类型,那么就可以返回该父类类型的对象或者它所有子类对象(return new 要返回的方法)
下转前要判断:
instanceof关键字:
变量名 instanceof 数据类型 如果变量属于该数据类型,返回true。 如果变量不属于该数据类型,返回false。 if( anl instanceof Cat){//判断anl是否能转换为Cat类型,如果可以返回:true,否则返回:false Cat c = (Cat)anl;//安全转换 }
匿名内部类:
作用就是为了简化代码,在不创建子类的情况下,直接得到一个类的子类对象
格式:
new 类名(){
重写 实现抽象方法
};
如果想要多次使用,就在new之前赋给一个对象,这个对象的类型要和原来的抽象类或者接口类类名一致
如果只是使用一次,直接在末尾调用该抽象方法