Java多态继承之对象转型

什么是多态

多态是面向对象三大特征中最重要的一种特征,多态可以体现方法层面,方法层面的多态由重载和重写实现;另外多态最重要的体现在变量层面,可以使用一个父类的引用变量指向任何的子类对象,从而实现引用动态绑定机制。

多态中的上转型与下转型

在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法
子类引用的对象转换为父类类型称为向上转型
向下转型的前提是父类对象指向的是子类对象,向下转型只能转型为本类对象。因此只有在继承中才有运用转型的可能。

例:

public class User {

	private int userName;
	private String pwd;

	public User(int userName, String pwd) {
		super();
		this.userName = userName;
		this.pwd = pwd;
	}

	public int getUserName() {
		return userName;
	}

	public void setUserName(int userName) {
		this.userName = userName;
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		} else {
			if (obj instanceof User) {
				// 下转型
				User u = (User) obj;
				if (this.userName == u.getUserName() && this.pwd.equals(u.pwd)) {
					return true;
				}
			}
		}
		return false;
	}

public class TestUser {

	public static void main(String[] args) {

		User u1 = new User(1001, "mima123");
		// 上转型
		Object u2 = new User(1001, "mima123");
		System.out.println(u1.equals(u2));
	}
}

此例在重写equals()方法时,先对传进来的对象u2进行了向上转型,之后为了通过对比username与pwd是否相同来判定u1与u2是否相同时对u2进行了向下转型。实际上u2本质上就是User类型,只不过为了实现方法才进行转型。

注意事项

使用多态可以提高程序的可扩展性,多态也称之为动态绑定
可以使用父类引用指向子类对象,但是如果使用子类引用指向父类对象时,操作不当将会导致类型转换异常(java.lang.ClassCastException)



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值