Java的继承和多态怎么理解?

本文详细解析了Java中的继承与多态概念,通过具体示例阐述如何利用继承减少代码冗余,并介绍了多态带来的代码灵活性提升。了解这两种特性对于深入掌握Java面向对象编程至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


tags: Java基础


Java的继承和多态怎么理解?

Java是面向对象的语言,拥有面向对象的三大特性

  • 封装
  • 继承
  • 多态

在设计Java对象的时候我们就可以很清晰的体验到了封装性。那么继承和多态怎么理解呢??为啥要把它俩放在一起呢???

在设计Java对象的时候,按照规范我们都是将Java对象设计成“职责分明”的。现在的问题就是,我们的Java对象可能会变得非常非常多,比如:猫、狗、猴子、猪、羊等等等对象。

但是又要为它们每一个设置对应的名字、年龄、动作。

这就会出现非常多的冗余代码了,那现在我们可以用一个“父亲”把它们通用的数据管理起来。那么只要它们是这个“父亲"的儿子,那么就默认有这么一些通用的属性了。

  • 这就避免了重复的代码在不同类中出现了

继承就是这么一回事,非常容易理解。那么多态呢??

刚才已经说了我们可以使用”父亲“来把它们一些通用的属性、行为管理起来。只要它们是这个”父亲“的儿子,那么就拥有这些通用的属性。那么父亲是不是与儿子大呢??

  • 答案是无疑的,无论是猫、狗、猪。它们都是动物(父亲)

那么,我们就可以使用动物变量来接收他们了

那我们用动物变量来接收他们,有什么好处呢???看下面的代码:



public Test{

	public eatFood(Cat cat ){
		cat.eat()
	}

	public eatFood(Dog dog){
		dog.eat()
	}

}

复制代码

如果我们没有使用多态的话,那么需要**调用对象的方法就要为其传递不同的参数。**上面的代码没有毛病,是很正常的。但如果我们使用了多态的话,代码会变得十分优雅。



public Test{

	public eatFood(Animal animal ){
		animal.eat()
	}

}
复制代码

上面的代码,会根据传递进来不同的对象类型,从而调用不同对象的方法!!!

  • 也就是说:如果传递进来的是Dog,那么内部会调用dog.eat()
  • 如果传递进来的是Cat,那么内部就会调用cat.eat()

Java内部会根据实际引用的对象类型调用不同的方法!在运行时能够自动地选择调用哪个方法的想象称之为动态绑定

方法调用的过程是这样子的:

  • 编译器查看对象声明的类型和方法名
  • 查看调用方法提供的参数类型
  • 如果是private、statics、final方法那么就静态绑定调用,与之对应的就是动态绑定!
  • 当程序运行时,虚拟机会调用与参数实际类型最合适的那个类的方法!

也就是说,调用对象中的哪一个方法是由实际类型参数决定的。先有继承后有多态的特性。

如果您觉得这篇文章帮助到了您,可以给作者一点鼓励

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值