java多态性

1.多态性
    同样的类型,调用同样的方法,根据子类对象的不同,产生不一样的状态
    
    //父类的引用可以指向子类的对象
    Person p = new Person();
    p.walk();
    Person p2 = new Student();
    p2.walk();
    Person p3 = new Worker();
    p3.walk();
    
    当编译的时候,按父类的类型调用,所以 就不能访问到子类的特有的属性和方法
    运行的时候,实际是子类的对象可供的实现
    
2.多态的使用
    比如在传参数的过程中,如果形参Person类型的参数
    那么实参为Person以及Person的子类类型对象
    public void method(Person p){
    
    }
    
    method(new Person());
    method(new Student());
    method(new Worker());
3.如果父类类型执行子类对象,那么就不能调用子类中特有的属性和方法
     如何才能在多态中调用子类的特有的属性和方法?
             可以通过强制类型转换:父类的类型可以任意转换子类的类型
      Person p = new Student();
      Student s = (Student)p;
      s.study();
      
      //注意:可能会产生类型转换异常(ClassCastException)
      //Worker w = (Worker)p;
4.如何在转换过程中,没有类型转换异常呢?
    可以在转换的时候,判断下,需要使用instanceof操作符
    x instanceof A: 检验x是否为类A的对象,返回值为boolean型。
                    要求x所属的类与类A必须是子类和父类的关系
                    
                    
    如:
    Person p = new Student();
    
    System.out.println(p instanceof Student);//true
    System.out.println(p instanceof Worker);//false
    
5.对象的类型转换
     对象自动类型转换(向上转型):子类的数据类型,可以直接给父类的数据类型.
         如: Person p = new Student();
     对象强制强制类型转换(向下转型,造型):把父类的数据类型给子类的数据类型,需要使用强制转换符"()"
             如:Student s = (Student)p;
    从子类到父类的类型转换可以自动进行
    从父类到子类的类型转换必须通过造型(强制类型转换)实现
    无继承关系的引用类型间的转换是非法的
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈思哲~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值