14/365 java 多态 instanceof

1.多态

多态的基础是动态编译,对象的类型在运行时才确定。

当一个父类引用指向一个子类对象时:

  • 父类引用调用父类独有的方法时,则调用该父类方法
  • 父类引用调用子类重写的方法时,则调用子类重写后的方法 (并不会去调用父类中的同名方法)
  • 父类引用调用子类独有的方法时,会报错,因为父类类型里并没有该方法
Rabbit r1 = new Rabbit();
Animial r2 = new Rabbit();

r1.act(); 
r2.act(); // 调用子类Rabbit的act方法

2.哪些方法不能被重写

static方法:属于类,不属于实例对象,无法重写

final :在常量池中

private:无法被子类继承

3.instanceof

语法:  对象  instanceof 类

该对象是否属于右边的类,或者属于右边的子类  返回boolean

看的是对象实际是什么类型,而非看对象的引用类型

Animal a = new Rabbit();
Systemn.out.println( a instanceof Animal ); //true
Systemn.out.println( a instanceof Rabbit ); //true
Systemn.out.println( a instanceof Object ); //true
Systemn.out.println( a instanceof Tiger ); //false
Systemn.out.println( a instanceof String ); //编译报错

a实际是Rabbit,所以是属于Rabbit类的,也是Animal类和Object类的派生类。

当左边的对象类型与右边的类没有任何继承关系时,会在编译时报错。

4.类型转换

基本类型:看位数: 64,32,16,8,4  高位数转低位数需要强制类型转换,低转高不需要

引用类型:父类转子类需要强制类型转换,子类转父类不需要

Animal a = new Rabbit(); //子类转父类,不需要强制转换
Rabbit r = (Rabbit)a;  //父类转子类,需要强制类型转换,可能会丢失子类的方法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值