白话文讲多态

对于多态的理解一直都仅限于那三句话:
1.父类的引用,引用子类型的实例
2.子类型里面重写父类型的方法
3.父类型的引用调用子类型的重写后的方法
但是其什么意思一直都是懵懵懂懂。也许比较厉害的人,一看就知道什么意思。呵呵,没办法,我就是比较笨,看不懂,所以,今天用通俗易懂的白话文,来补充一下多态。([color=red]稍微比较厉害的人,可以飘过了。[/color])

多态中,虽然走的是子类中的方法,但是可用的只有从父类中继承的方法。
如果,子类中的方法,在父类中没有,那么在判断输出结果时,此方法不存在。
父类中有这个方法,子类中重写了此方法,那么输出结果以子类中的为准。
父类中有这个方法,子类中没有重写此方法,那么输出结果以父类中的为准。
若:
class A extends B{}
B b = new A();
那么A中新增的方法将不会运行,只会走A中重写B类的方法,和B类中的方法。如果B继承了C的类,那么还会走C中B没有实现的方法。

这是我通过一个例子,理解出来的,如果有不对的地方,还请见谅,或者,帮我指正也好。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java中,多态可以通过继承和接口实现。具体地说,多态是指一个对象能够表现出多种形态,即同一种类型的对象,在不同的情况下表现出不同的行为。 在JVM中,当一个对象被声明为其父类或者接口类型时,它可以被赋值给任何与该父类或接口相关联的子类对象。这种机制称为向上转型(upcasting)。通过向上转型,可以使得一个对象表现出多种形态,并且可以调用不同子类的方法。 例如,假设有一个抽象类Animal,其中定义了一个抽象方法eat()。然后有两个子类Dog和Cat,它们都继承自Animal类并且实现了eat()方法。代码如下所示: ``` abstract class Animal { abstract void eat(); } class Dog extends Animal { void eat() { System.out.println("Dog is eating"); } } class Cat extends Animal { void eat() { System.out.println("Cat is eating"); } } ``` 现在,我们可以创建一个Animal类型的引用变量,然后将其指向Dog或Cat的对象,从而实现多态。例如: ``` Animal animal1 = new Dog(); Animal animal2 = new Cat(); ``` 这里animal1和animal2都是Animal类型的引用变量,但是它们分别指向了Dog和Cat对象。由于Dog和Cat都是Animal的子类,因此它们都可以被向上转型成Animal类型。 接下来,我们可以通过这些引用变量调用它们所指向的对象的eat()方法,并且会自动调用对应的子类的方法。例如: ``` animal1.eat(); // 输出 "Dog is eating" animal2.eat(); // 输出 "Cat is eating" ``` 这里animal1和animal2都调用了Animal类中定义的eat()方法,但是由于它们分别指向了Dog和Cat对象,因此实际上会自动调用Dog和Cat类中的eat()方法。这就是多态的实现机制。 总之,通过继承和接口的多态机制,我们可以实现代码的灵活性和可扩展性,从而提高程序的可维护性和可重用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值