`
Messi光明
  • 浏览: 55686 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

java多态的理解

 
阅读更多
首先 我想说 这个程序不是我的 但是我觉得这个能很好的反应出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多态理解 java中的多态性是面向对象编程的精髓所在。多态性是指父类引用指向子类对象,例如父类Animal,子类Cat和Dog。其中Animal可以是类也可以是接口,Cat和Dog是继承或实现Animal的子类。Animal animal = ...

    对java中多态理解

    对 Java 中多态理解 Java 中的多态是指在不同的情况下可以有不同的行为,多态是面向对象编程的一种基本特征。多态的实现是通过方法重载和方法重写来实现的。 在 Java 中,多态可以分为两种:编译时多态和运行时...

    【Java面试题】谈谈对Java多态的理解

    【Java面试题】谈谈对Java多态的理解

    java多态的总结

    Java的多态性是面向对象编程的一个核心特性,它允许我们使用一个接口来表示不同的类,使得代码更加灵活,易于维护。多态性是通过继承、接口和方法重写来...理解并熟练运用多态,能帮助开发者编写出更高质量的Java程序。

    java 多态 经典讲解

    #### 一、理解Java多态 多态,作为面向对象编程的三大特性之一,是继抽象和继承之后的关键概念。它允许我们以统一的接口处理不同类型的对象,增强了代码的灵活性和可扩展性。在Java中,多态主要通过两种方式体现:*...

    Java 多态中的类型转换

    本篇将深入探讨Java多态中的类型转换,包括向上转型(Upcasting)和向下转型(Downcasting),以及相关的注意事项。 1. **向上转型(Upcasting)** 向上转型是指将子类的对象引用赋值给父类的引用。在Java中,这是...

    C++和Java多态的区别

    ### C++和Java多态的区别 #### 一、概述 多态是面向对象编程语言中的一个核心特性,它允许程序员能够使用基类的指针或引用指向派生类的对象,并在运行时根据对象的实际类型来选择合适的方法进行调用。这一特性增强...

    从虚拟机角度看Java多态->(重写override)的实现原理

    Java多态是面向对象编程中的一个核心特性,它允许我们以一种统一的方式处理不同类型的对象。在Java中,多态性主要通过继承、接口和方法重写(Override)来实现。这里我们将深入探讨从虚拟机(JVM)的角度来看,Java...

    java多态实验

    在这个“java多态实验”中,我们可以看到一系列小代码实例,这些实例旨在帮助理解和应用多态特性。下面我们将深入探讨多态的概念、实现方式以及它在实际开发中的应用。 1. 多态性定义: 多态(Polymorphism)源自...

    Java 多态应用,掌握多态

    通过学习和实践上述知识点,开发者可以更好地理解和运用Java中的多态特性,编写出更加高效、可维护的代码。对于给定的压缩包文件"com多态",可能包含了相关的示例代码或者练习,这些可以帮助你更直观地理解并掌握...

    java 多态的含义和例子经典讲解

    多态在Java中有着深远的影响,它提高了代码的可重用性、灵活性和可扩展性。本篇将通过一个经典例子深入解析多态的含义,并通过实际代码展示其应用。 首先,我们要理解多态的定义。在Java中,多态性(Polymorphism)...

    java 多态的泛型实现

    在Java中,多态主要体现在两个方面:方法重载(Overloading)和方法重写(Overriding)。方法重载是指在一个类中可以有多个同名方法,但参数列表不同;方法重写则是在子类中重新定义父类已有的非私有方法,以提供...

    Java多态,面向对象编程题demo.zip

    Java多态是面向对象编程中的一个核心概念,它允许我们以一种统一的方式处理不同类型的对象。在Java中,多态性主要体现在方法的重写(Override)和重载(Overload)。通过多态,我们可以编写出更加灵活、可扩展的代码...

    java多态的讲解

    用代码实例和注释向你讲述什么是多态,实例更容易理解

    java多态的理解共3页.pdf.zip

    首先,要理解Java多态的基础,我们需要了解类的继承和接口。在Java中,一个类可以继承另一个类,形成一种"is-a"的关系,比如`Dog is a Animal`。这种关系使得子类能够拥有父类的所有非私有属性和方法。同时,Java还...

    java中多态的内存分析

    在深入探讨Java中多态的内存分析之前,我们需要先理解一些基本概念。 首先,了解Java内存模型至关重要。Java程序运行时主要涉及四种内存区域:程序计数器、虚拟机栈、本地方法栈、堆和方法区(在Java 8及以后版本中...

    java多态小结

    ### Java多态详解 #### 什么是多态? 多态(Polymorphism)是面向对象编程的一个核心特性,指的是一个接口可以被多个类所实现或一个类可以被多个类所继承,进而表现出不同的行为。在Java中,多态主要体现在两个...

    java 多态.docx

    在Java编程语言中,多态(Polymorphism)是一种核心特性,它允许我们设计更加灵活、可扩展的代码。多态使得一个接口可以有多种不同的实现或者表现形式,...理解和熟练运用多态,对于编写高质量的Java应用程序至关重要。

    java多态机制

    为了更好地理解Java多态的应用,下面通过一个简单的示例来说明。 **示例**:假设有一个`Animal`类作为基类,它有一个`makeSound()`方法。我们可以创建两个子类`Dog`和`Cat`,分别重写`makeSound()`方法。 ```java ...

    Java多态案例及源码.rar

    Java多态是面向对象编程中的一个核心概念,它允许我们使用父类引用处理子类对象,从而实现更灵活的代码设计。在这个“Java多态案例及源码.rar”压缩包中,你将找到一系列关于Java多态的实例和源代码,非常适合教师在...

Global site tag (gtag.js) - Google Analytics