java转型问题(向上向下转型)

向上转型(父类引用指向子类对象)
Father f1 = new Son();
无需强制转换
向下转型
Son son=(Son)f1
需要强制转换

多态存在的三个必要条件
1,继承

父类 Perpson
子类 Man extends Person
子类 Women extends Person

2,重写

   function dance(父类)
   function dance(子类重写方法)  Man
   function dance(子类重写方法)  Women

3,向上转型

Person p=new Man();
Person p1=new Women();
p.dance();
p1.dance();
分别执行自己的dance方法

意义:通过简单代码分析一下

public class Person {
    public  void  eat(){
        System.out.println("人会吃");
    }
    public  void  speak(){
        System.out.println("人会说话");
    }
}
public class Man extends Person {
    public  void  eat(){
        System.out.println("男人会吃");
    }
}

public class Women extends  Person{
    public  void  eat(){
        System.out.println("女人会吃");
    }
    public  void  baby(){
        System.out.println("女人会生孩子");
    }
}

    public static void main(String[] args) {
        //向上转型
        //可以调用父类方法,子类重写方法,
        //不能调用独有的方法(例如:Women的baby方法)
        Person p=new Man();
        p.eat();
        p.speak();
        Person p1=new Women();
        p1.eat();
        //向下转型(子类中有不同于父类的单独方法,向下转型就可以调用子类独有方法)
        //向下转型必须转换为父类引用指向的真实子类类型
        //不能是 Men w=(Men)p1;因为p1是women对象指向父类引用
        Women w=(Women)p1;
        w.baby();

    }

由此可得:
向上转型的意义:就是实例化的时候可以根据不同的需求实例化不同的对象(women man),这也就是多态的意义。
向下转型的意义:父类引用可以使用子类的新增方法了。
这样一来,可以使用父类总结出来的方法,子类重写的方法,子类扩充的方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值