如何通过实例具体分析Java中的多态现象?

更新于
2026-08-02 09:20:57
15阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计713个文字,预计阅读时间需要3分钟。

如何通过实例具体分析Java中的多态现象?

这篇文章主要介绍了通过实例分析Java多态的概念。文中通过示例代码详细展示了多态的应用,对于想要学习或从事相关工作的人来说,具有一定的参考价值。需要的伙伴可以参考以下代码示例:javaclass Animal { public void makeSound() { System.out.println(Animal makes a sound); }}

class Dog extends Animal { @Override public void makeSound() { System.out.println(Dog barks); }}

class Cat extends Animal { @Override public void makeSound() { System.out.println(Cat meows); }}

public class Main { public static void main(String[] args) { Animal myAnimal=new Dog(); myAnimal.makeSound(); // 输出:Dog barks

myAnimal=new Cat(); myAnimal.makeSound(); // 输出:Cat meows }}

这篇文章主要介绍了通过实例分析java多态,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

首先来看这样的一段代码,其中对于类的定义如下:

class Parent{ public int myValue=100; public void printValue() { System.out.println("Parent.printValue(),myValue="+myValue); } } class Child extends Parent{ public int myValue=200; public void printValue() { System.out.println("Child.printValue(),myValue="+myValue); } }

我们来一个一个的回答问题:

1.运行结果如图

2.对于这个运行结果的解释,第一行第二行都是正常的调用,第三行中,将child赋给了parent 再进行的输出,这时候我们发现结果变成了200 并且输出语句也变了。

第四句,执行了parent.myValue++;但结果并没有改变。第五行中,将parent类强行转换为子类后又进行了自增,结果变成了201.

3.对于这里的分析,我们发现子类赋值给父类是没有问题的,也就是说子类完全可以直接转换成父类。第四行的语句结果还是200,说明他对于myValue的++还是调用了父类中的Value,但最后还是输出了子类的Value.说明子类赋给父类后,只是一部分替代,并不是完全覆盖。第五句里,将父类转换成子类然后进行++,第四句第五句结合起来,可以说明子类赋值给父类,并不是所谓的覆盖,只是把原本的东西给隐藏了罢了。而强制转换后则不同,直接变成了子类。

最后,这其实告诉我们在实际应用中,我们不应该把父类和子类设置成相同的源代码和成员变量,对于程序员在编程时的理解十分不利。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

如何通过实例具体分析Java中的多态现象?

本文共计713个文字,预计阅读时间需要3分钟。

如何通过实例具体分析Java中的多态现象?

这篇文章主要介绍了通过实例分析Java多态的概念。文中通过示例代码详细展示了多态的应用,对于想要学习或从事相关工作的人来说,具有一定的参考价值。需要的伙伴可以参考以下代码示例:javaclass Animal { public void makeSound() { System.out.println(Animal makes a sound); }}

class Dog extends Animal { @Override public void makeSound() { System.out.println(Dog barks); }}

class Cat extends Animal { @Override public void makeSound() { System.out.println(Cat meows); }}

public class Main { public static void main(String[] args) { Animal myAnimal=new Dog(); myAnimal.makeSound(); // 输出:Dog barks

myAnimal=new Cat(); myAnimal.makeSound(); // 输出:Cat meows }}

这篇文章主要介绍了通过实例分析java多态,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

首先来看这样的一段代码,其中对于类的定义如下:

class Parent{ public int myValue=100; public void printValue() { System.out.println("Parent.printValue(),myValue="+myValue); } } class Child extends Parent{ public int myValue=200; public void printValue() { System.out.println("Child.printValue(),myValue="+myValue); } }

我们来一个一个的回答问题:

1.运行结果如图

2.对于这个运行结果的解释,第一行第二行都是正常的调用,第三行中,将child赋给了parent 再进行的输出,这时候我们发现结果变成了200 并且输出语句也变了。

第四句,执行了parent.myValue++;但结果并没有改变。第五行中,将parent类强行转换为子类后又进行了自增,结果变成了201.

3.对于这里的分析,我们发现子类赋值给父类是没有问题的,也就是说子类完全可以直接转换成父类。第四行的语句结果还是200,说明他对于myValue的++还是调用了父类中的Value,但最后还是输出了子类的Value.说明子类赋给父类后,只是一部分替代,并不是完全覆盖。第五句里,将父类转换成子类然后进行++,第四句第五句结合起来,可以说明子类赋值给父类,并不是所谓的覆盖,只是把原本的东西给隐藏了罢了。而强制转换后则不同,直接变成了子类。

最后,这其实告诉我们在实际应用中,我们不应该把父类和子类设置成相同的源代码和成员变量,对于程序员在编程时的理解十分不利。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

如何通过实例具体分析Java中的多态现象?