`
fengyong0912
  • 浏览: 106995 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

java 多态性

    博客分类:
  • JAVA
阅读更多

多态性是面向对象的语言的一个主要特色,因为C++为了照顾C的原因,让其成为了一个不彻底的面向对象,而Java作为一门完全的面向对象语言,故而在多态性这点上有其独特的特色。本文就我自己对Java多态性的理解,谈了一些自己的看法,然后写了点代码表达一下。

     总的来说,Java的多态性通过两种方式来表现,一种是静态,另一种是动态。假设现在有两个类,父类为Parent,子类为Child,两个类中都有方法func。

Java代码 复制代码
  1. class Parent {   
  2.     public void func(String str) {   
  3.         System.out.println("In the Parent's function ");   
  4.     }   
  5.        
  6. }   
  7.   
  8. class Child extends Parent {   
  9.     //覆盖父类的方法时   
  10.     public void func(String str) {   
  11.         System.out.println("In the Child's function, overriding ");   
  12.     }   
  13.        
  14.     //重载父类的方法   
  15.     public void func() {   
  16.         System.out.println("In the Child's function, overloading");   
  17.     }   
  18. }  
class Parent {
    public void func(String str) {
        System.out.println("In the Parent's function ");
    }
    
}

class Child extends Parent {
    //覆盖父类的方法时
    public void func(String str) {
        System.out.println("In the Child's function, overriding ");
    }
    
    //重载父类的方法
    public void func() {
        System.out.println("In the Child's function, overloading");
    }
}
  

 

     静态而言就是这样的,用一个父类的引用引用父类的一个对象,如Parent p = new Parent(); 再用子类的一个引用指向一个子类的对象,如 Child c = new Child(); 分别调用父类跟子类的方法时(通过p跟c)都是调用本身类中的方法。如执行p.func("Parent"); c.func("Child"); 时分别调用父类和子类中的方法。

     对于动态而言,我个人觉得可以这样理解,因为动态调用要求在子类覆盖父类中对应的方法,也就是说,在子类中已经看不到父类中的那个方法了,调用时采用super.func(参数); 那么再调用该方法时就是调用子类的这个方法了。当然采用动态调用时必须得用一个父类的引用来引用一个子类的对象,如Parent p2 = new Child(); 才能调用子类中的方法,如果是父类的引用指向一个父类的对象,就会调用的是父类的方法,也就是说,要实现动态调用,必须得是一个父类的引用来引用一个子类或者父类的对象。

     一直以来,我都觉得子类中不能同时存在两个同名方法,一个是对父类相应方法的overriding,一个对父类对应方法的overloading。但前天一写代码实现才发现这样是行得通的,下面是我写的代码跟相应的输出结果,个人表达能力有限,就不解释原因了。


<!---->class  Parent {
    
public   void  func(String str) {
        System.out.println(
" In the Parent's function  " );
    }
    
}

class  Child  extends  Parent {
    
// 覆盖父类的方法时
     public   void  func(String str) {
        System.out.println(
" In the Child's function, overriding  " );
    }
    
    
// 重载父类的方法
     public   void  func() {
        System.out.println(
" In the Child's function, overloading " );
    }
}

public   class  OverrindAndOverload {
    
public   static   void  main(String[] args) {
        Parent p 
=   new  Parent();
        p.func(
" Parent " );     // In the Parent's function 
        
        Child c1 
=   new  Child();
        c1.func(
" Child " );     // In the Child's function, overriding 
        
        Child c2 
=   new  Child();
        c2.func();            
// In the Child's function, overloading
        
        Parent dp 
=   new  Child();
        dp.func(
" who " );         // In the Child's function, overriding 
    }
}
Java代码 复制代码
  1. class Parent {   
  2.     public void func(String str) {   
  3.         System.out.println("In the Parent's function ");   
  4.     }   
  5.        
  6. }   
  7.   
  8. class Child extends Parent {   
  9.     //覆盖父类的方法时   
  10.     public void func(String str) {   
  11.         System.out.println("In the Child's function, overriding ");   
  12.     }   
  13.        
  14.     //重载父类的方法   
  15.     public void func() {   
  16.         System.out.println("In the Child's function, overloading");   
  17.     }   
  18. }   
  19.   
  20. public class OverrindAndOverload {   
  21.     public static void main(String[] args) {   
  22.         Parent p = new Parent();   
  23.         p.func("Parent");    //In the Parent's function    
  24.            
  25.         Child c1 = new Child();   
  26.         c1.func("Child");    //In the Child's function, overriding    
  27.            
  28.         Child c2 = new Child();   
  29.         c2.func();            //In the Child's function, overloading   
  30.            
  31.         Parent dp = new Child();   
  32.         dp.func("who");        //In the Child's function, overriding    
  33.     }   
  34. }  
分享到:
评论

相关推荐

    java多态性

    "Java多态性详解" Java多态性是面向对象编程的基本特征之一,它允许子类继承父类,并对父类的方法进行重写或重载,以实现更多的灵活性和可扩展性。在Java中,多态性的体现主要有两种形式:方法的重载和方法的重写。...

    java多态性练习

    Java多态性是面向对象编程中的一个重要特性,它允许我们使用父类引用指向子类对象,从而实现一种灵活的代码设计。在这个“java多态性练习”中,我们将深入探讨多态性的概念、抽象类(abstract class)以及它们在实际...

    实验二:java多态性.rar

    Java多态性是面向对象编程中的一个重要概念,它在Java中起到了关键的作用,使得程序更加灵活,可扩展性更强。本实验将深入探讨Java多态性的核心原理与应用。 首先,我们要理解多态性的基本含义。多态性...

    Java多态性实验报告

    ### Java多态性实验知识点解析 #### 实验背景与目的 本次实验主要目的是让学生通过实践操作,深入理解Java中的多态性概念,并掌握如何利用多态性实现代码的灵活性和可扩展性。实验中,学生将通过编写一个处理复数...

    Java多态性探悉()

    本文将深入探讨Java多态性的概念、实现机制以及相关的编程规则。 一、基本概念 多态性意味着一个接口可以有多种不同的表现形式。在Java中,可以通过子类对象引用赋值给超类对象引用变量来实现这一特性。这意味着,...

    Java多态性浅析.pdf

    Java 多态性是面向对象技术的三大特性之一,它通过继承中的覆盖(动态多态性)和方法的重载(静态多态性)实现的。在Java中,多态性指的是一个名词可以有多个语义。 多态性的实现 Java 的多态性可以通过两种方式...

    java多态性.pdf

    Java 多态性 Java 的多态性是面向对象编程的三个特征之一,另外两个是封装和继承。多态性是指同一个方法可以根据不同的对象而有不同的行为,或者说同一个方法可以根据不同的对象而有不同的实现。 Java 之所以引入...

    java多态性详解——父类引用子类对象.pdf

    Java 多态性详解 —— 父类引用子类对象 多态性是 Java 面向对象编程的三个特征之一,另外两个是封装和继承。多态性是指通过方法的重写、重载和动态连接来实现的。在 Java 中,多态性是为了解决单继承问题而引入的...

    【Java编程教程】详解Java 多态性.pdf

    【Java编程教程】详解Java 多态性 Java 作为一门面向对象的编程语言,其核心特性之一就是多态性。多态性使得程序在设计上具有更高的灵活性和可扩展性,允许我们以多种方式执行相同的操作。多态性这个概念来源于希腊...

    基于反射机制的数据流Java多态性实现及研究.pdf

    "基于反射机制的数据流Java多态性实现及研究" 本文主要介绍了基于反射机制的数据流Java多态性实现及研究。数据流Java是一种并行程序设计模型,它也具有面向对象程序多态的概念,反射机制允许程序运行时动态地加载一...

    编程语言java多态性.pdf

    Java多态性涉及到的关键词包括:extends(继承)、implements(实现接口)、abstract(抽象类和方法)、virtual(虚函数,C++中的概念)、Override(覆盖)、Overloading(重载)、Encapsulation(封装)等。...

    Java多态性的实现.pdf

    Java多态性的实现.pdf

    使用Java多态性实现一个简单的动物园管理系统.txt

    ### 使用Java多态性实现一个简单的动物园管理系统的知识点解析 #### 一、抽象类与抽象方法 本系统中,`Animal`被定义为一个抽象类,这意味着它不能被实例化,仅能作为其他类的基础来扩展。抽象类的存在主要是为了...

    java多态性讲解

    可以更清楚的了解java,帮助你认识java的多态性

    Java多态性之隐式重载的应用分析.pdf

    Java多态性之隐式重载的应用分析.pdf

    java类和对象继承多态性

    java类和对象继承多态性 java类和对象继承多态性是java语言中的一种基本机制,它允许开发者创建一个新的类,并继承已有的类的属性和行为。这种机制可以提高代码的复用性和维护性。 继承是java语言中的一种机制,...

    java多态性详解——父类引用子类对象

    Java的多态性是面向对象编程(OOP)的三大特性之一,它允许程序设计者以通用的方式处理不同的数据类型,增强了代码的复用性和灵活性。本文将深入探讨Java中的多态性,特别是“父类引用子类对象”的概念,以及这一特性...

    Java多态性定义与用法实例详解

    "Java多态性定义与用法实例详解" 本文主要介绍了Java多态性定义与用法,详细分析了多态的概念、功能以及Java定义与实现面向对象多态性的相关操作技巧。 一、基本概念 多态性是指发送消息给某个对象,让该对象自行...

    探索Java多态性:编程语言的瑞士军刀

    4. **多线程**:Java内置了对多线程编程的支持,允许开发者创建同时执行的多个线程。 5. **网络编程**:Java提供了丰富的网络通信API,使得开发网络应用变得容易。 6. **安全性**:Java提供了一个安全

Global site tag (gtag.js) - Google Analytics