首先 我想说 这个程序不是我的 但是我觉得这个能很好的反应出JAVA的多态,使大家能更好的理解JAVA多态.对大家的学习有点帮助。由于是COPY过来的 就不要积分了哈哈
希望大家能从中学到些什么。 class A ...{
public String show(D obj)...{ return ("A and D"); }
public String show(A obj)...{ return ("A and A"); } }
class B extends A...{
public String show(B obj)...{ return ("B and B"); }
public String show(A obj)...{ return ("B and A"); } }
class C extends B...{}
class D extends B...{}
以下输出结果是什么?
A a1 = new A();
A a2 = new B();
B b = new B();
C c = new C();
D d = new D();
System.out.println(a1.sho(b)); ①
System.out.println(a1.sh(c)); ②
System.out.println(a1.sho(d)); ③
System.out.println(a2.sh(b)); ④
System.out.println(a2.sho(c)); ⑤
System.out.println(a2.sh(d)); ⑥
System.out.println(b.s(b)); ⑦
System.out.println(b.sh(c)); ⑧
System.out.println(b.show(d)); ⑨
三)答案
① A and A
② A and A
③ A and D
④ B and A
⑤ B and A
⑥ A and D
⑦ B and B
⑧ B and B
⑨ A and D
1 a1.shows(b),在A中没有含有B类参数的方法,但是含有A类参数的方法,根据子类对象父类可用的原则,所以调用方法
public String show(A obj)...{return ("A and A");}
2 a1.show(c),C类是B类的子类,而B类又是A类的子类,所以C类对象可以当制作A类对象使用。结果同上。
3 a1.show(d),根据参数类型直接调用A中的方法 public String show(D obj)...{ return ("A and D"); }
4 a2.show(b),a2本来是一个B对象,但是将其赋给了A类变量,所以a2只保留了与父类A同名的属性和方法。a2.show(b)调用B类中的保留的与父类同名同参方法
public String show(A obj)...{ return ("B and A"); }
5 a2.show(c),B类的保留方法中没有C类参数方法,但是有含有C的父类A的参数方法,所以调用的方法
public String show(A obj)...{ return ("B and A"); }
6 a2.show(d),调用的是A类中的
public String show(D obj)...{ return ("A and D"); }
7 b.show(b),调用B类中的
public String show(B obj)...{ return ("B and B"); }
8 b.show(c),B类中没有C类参数的方法,但是有B类参数的方法,所以调用方法 public String show(B obj)...{ return ("B and B"); }
9 b.show(d),解释同8
P.S. 关于6中是否有权限问题 请大家自己试试为什么不调用public String show(A obj) 而调用 public String show(D obj) 可能是D的权限比A大吧….(个人理解)
分享到:
相关推荐
Java多态理解 java中的多态性是面向对象编程的精髓所在。多态性是指父类引用指向子类对象,例如父类Animal,子类Cat和Dog。其中Animal可以是类也可以是接口,Cat和Dog是继承或实现Animal的子类。Animal animal = ...
对 Java 中多态理解 Java 中的多态是指在不同的情况下可以有不同的行为,多态是面向对象编程的一种基本特征。多态的实现是通过方法重载和方法重写来实现的。 在 Java 中,多态可以分为两种:编译时多态和运行时...
【Java面试题】谈谈对Java多态的理解
Java的多态性是面向对象编程的一个核心特性,它允许我们使用一个接口来表示不同的类,使得代码更加灵活,易于维护。多态性是通过继承、接口和方法重写来...理解并熟练运用多态,能帮助开发者编写出更高质量的Java程序。
#### 一、理解Java多态 多态,作为面向对象编程的三大特性之一,是继抽象和继承之后的关键概念。它允许我们以统一的接口处理不同类型的对象,增强了代码的灵活性和可扩展性。在Java中,多态主要通过两种方式体现:*...
本篇将深入探讨Java多态中的类型转换,包括向上转型(Upcasting)和向下转型(Downcasting),以及相关的注意事项。 1. **向上转型(Upcasting)** 向上转型是指将子类的对象引用赋值给父类的引用。在Java中,这是...
### C++和Java多态的区别 #### 一、概述 多态是面向对象编程语言中的一个核心特性,它允许程序员能够使用基类的指针或引用指向派生类的对象,并在运行时根据对象的实际类型来选择合适的方法进行调用。这一特性增强...
Java多态是面向对象编程中的一个核心特性,它允许我们以一种统一的方式处理不同类型的对象。在Java中,多态性主要通过继承、接口和方法重写(Override)来实现。这里我们将深入探讨从虚拟机(JVM)的角度来看,Java...
在这个“java多态实验”中,我们可以看到一系列小代码实例,这些实例旨在帮助理解和应用多态特性。下面我们将深入探讨多态的概念、实现方式以及它在实际开发中的应用。 1. 多态性定义: 多态(Polymorphism)源自...
通过学习和实践上述知识点,开发者可以更好地理解和运用Java中的多态特性,编写出更加高效、可维护的代码。对于给定的压缩包文件"com多态",可能包含了相关的示例代码或者练习,这些可以帮助你更直观地理解并掌握...
多态在Java中有着深远的影响,它提高了代码的可重用性、灵活性和可扩展性。本篇将通过一个经典例子深入解析多态的含义,并通过实际代码展示其应用。 首先,我们要理解多态的定义。在Java中,多态性(Polymorphism)...
在Java中,多态主要体现在两个方面:方法重载(Overloading)和方法重写(Overriding)。方法重载是指在一个类中可以有多个同名方法,但参数列表不同;方法重写则是在子类中重新定义父类已有的非私有方法,以提供...
Java多态是面向对象编程中的一个核心概念,它允许我们以一种统一的方式处理不同类型的对象。在Java中,多态性主要体现在方法的重写(Override)和重载(Overload)。通过多态,我们可以编写出更加灵活、可扩展的代码...
用代码实例和注释向你讲述什么是多态,实例更容易理解
首先,要理解Java多态的基础,我们需要了解类的继承和接口。在Java中,一个类可以继承另一个类,形成一种"is-a"的关系,比如`Dog is a Animal`。这种关系使得子类能够拥有父类的所有非私有属性和方法。同时,Java还...
在深入探讨Java中多态的内存分析之前,我们需要先理解一些基本概念。 首先,了解Java内存模型至关重要。Java程序运行时主要涉及四种内存区域:程序计数器、虚拟机栈、本地方法栈、堆和方法区(在Java 8及以后版本中...
### Java多态详解 #### 什么是多态? 多态(Polymorphism)是面向对象编程的一个核心特性,指的是一个接口可以被多个类所实现或一个类可以被多个类所继承,进而表现出不同的行为。在Java中,多态主要体现在两个...
在Java编程语言中,多态(Polymorphism)是一种核心特性,它允许我们设计更加灵活、可扩展的代码。多态使得一个接口可以有多种不同的实现或者表现形式,...理解和熟练运用多态,对于编写高质量的Java应用程序至关重要。
为了更好地理解Java多态的应用,下面通过一个简单的示例来说明。 **示例**:假设有一个`Animal`类作为基类,它有一个`makeSound()`方法。我们可以创建两个子类`Dog`和`Cat`,分别重写`makeSound()`方法。 ```java ...
Java多态是面向对象编程中的一个核心概念,它允许我们使用父类引用处理子类对象,从而实现更灵活的代码设计。在这个“Java多态案例及源码.rar”压缩包中,你将找到一系列关于Java多态的实例和源代码,非常适合教师在...