Java中向上转型的意义

在学习Java多态性相关内容时,我一直不理解向上转型的意义,为什么要发生向上转型呢?

向上转型

定义:子类对象赋值给父类类型的变量,通俗地说就是是将子类对象转为父类对象

class Person{
	public void print() {
		System.out.println("人类");
	}
}
class Student extends Person{
	public void print() {
		System.out.println("我是学生");
	}
}
class Tea extends Person{
	public void print() {
		System.out.println("我是老师");
	}
}
public class Test{
	public static void main(String[] args) {
		Person per=new Student();//向上转型
		per.print();
	}
}

首先,这是一个典型的向上转型的例子,Person per=new Student();在这里,new Student()相当于创建了一个Student类的对象,然后将这个对象赋值给父类类型的变量per,从而实现了将子类对象转换为了父类对象,同时,per调用的是子类的print()方法。

向上转型需要注意的地方

  1. 向上转型后,子类单独定义的方法会丢失(父类并不知道子类定义的新属性与方法)
  2. 父类引用可以指向子类对象,但是子类引用不能指向父类对象
  3. 如果子类中重写了父类的方法,那么调用这个方法的时候,将会调用子类中的方法

那么重点来了,向上转型的意义究竟是什么?

向上转型的意义

  1. 减少重复代码
  2. 实例化的时候可以根据不同的需求实例化不同的的对象,实现参数统一化

假如现在我们写一个getMessage()方法,用来接收不同子类的对象,然后调用它们的print()方法输出各个子类对象的相关信息,那么此时,有多少个子类,我们就需要写多少个方法,分别用来接收各个不同子类的对象

  
     public void getMessage (Student stu) {
    	 stu.print();
     }
     public void getMessage(Tescher ter) {
    	 ter.print();
     }

当我们使用了向上转型之后,就可以只写一个fun()方法来接收所有Person类的子类对象,这样就实现了参数的统一化

 public void getMessage(Person per) {
    	per.print();
    }
      
  • 24
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值