java向上转型后方法变量详细使用规则(父类引用创建子类对象实例)

向上转型:就是把子类对象赋值给父类类型的变量。接下来用一个简单的例子来进行使用介绍:

创建父类

public class Person {
    public String name  = "this is a person";

    public String sing(Person person){
        return  "person";
    }
    public String rap(){
        return "rap";
    }
}

创建子类

public class Student extends Person{
    public String name  = "this is a student";

    @Override
    public String sing(Person person){
        return  "override";
    }

    public String sing(Student student){
        return  "overload";
    }

    public  String jump(){
        return  "jump";
    }
}

测试类

public class Test {
    public static void main(String[] args) {
        //向上转型
        Person p = new Student();
        //直接调用父类独有的方法
        System.out.println(p.rap());
        //调用子类重写的方法
        System.out.println(p.sing(p));
        //通过向下转型调用子类重载的方法
        System.out.println(((Student) p).sing((Student)p));
        //通过向下转型调用子类独有的方法
        System.out.println(((Student) p).jump());
        //直接调用父类变量
        System.out.println(p.name);
        //通过向下转型调用子类变量
        System.out.println(((Student) p).name);
    }
}

控制台输出

rap
override
overload
jump
this is a person
this is a student

由以上结果可得:
向上转型创建的变量,直接调用的都是父类的方法和变量,若子类重写了父类的该方法,则会直接调用子类的方法,若想调用子类独有的方法和变量,可以通过向下转型实现调用。
之前查阅网上资料的时候,发现很多文章描述不太准确,把重写和重载(覆盖)都搞混了,有的直接写“同名方法”,重写和重载都是基于同名方法呀……所以这里顺便贴一下重写和重载的详细区别文章,供大家学习参考:https://blog.csdn.net/qq_38685503/article/details/113739437

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

”PANDA

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

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

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

打赏作者

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

抵扣说明:

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

余额充值