`
songzhan
  • 浏览: 245860 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java多态(利用向上向下转型和反射机理)

 
阅读更多

Java多态(利用向上向下转型和反射机理)

  1.     //基类:     
  2.     public class Polymorphism {    
  3.         public int book=6;    
  4.         public void base(){    
  5.             System.out.println("父类的普通方法");    
  6.         }    
  7.         public void test(){    
  8.             System.out.println("父类的被覆盖的方法");    
  9.         }    
  10.         
  11.     }    
  12.     //子类     
  13.         
  14.     import java.lang.reflect.InvocationTargetException;    
  15.     import java.lang.reflect.Method;    
  16.         
  17.     public class SubClass extends Polymorphism {    
  18.         
  19.         public String book="子类的book";    
  20.             
  21.         @Override    
  22.         public void test() {    
  23.         System.out.println("子类的覆盖父类的方法");    
  24.         }    
  25.         public void sub(){    
  26.             System.out.println("子类特有的独特方法");    
  27.         }    
  28.         
  29.         public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {    
  30.                 
  31.             Polymorphism bs=new Polymorphism();    
  32.             System.out.println(bs.book);    
  33.             bs.base();    
  34.             bs.test();    
  35.             SubClass sc=new SubClass();    
  36.          //通过引用变量来访问其包含的实例属性时,系统总是试图访问它编译时类所定义的属性,而不是它运行时类所定义的属性     
  37.   
  38.         System.out.println(sc.book);  
  39.   
  40.          sc.test();    
  41.       sc.base();     
  42.      sc.sub();  
  43.   
  44.         Polymorphism py=new SubClass();   
  45.        System.out.println(py.book);    
  46.       py.base();  
  47.  py.test();   
  48.        //利用向下转型可以访问子类特有方法     
  49.       SubClass ss=(SubClass)py;    
  50.       ss.sub();     
  51.      //利用反射也可以     
  52.      Method[] cla=py.getClass().getMethods();  
  53.  int i=1;   
  54.      for(Method mth:cla){    
  55.         System.out.println(i+":");    
  56.         System.out.println(mth.toString()+":"+mth.getName());//省略    
  57.          if(mth.getName()=="sub"){         
  58.        System.out.println("*********");        
  59.         mth.invoke(py, null);//执行子类特有的方法体      
  60.            break;         
  61.    }          
  62.   i++;     
  63.             }  
  64.  }  
  65. }  
 
分享到:
评论

相关推荐

    Java多态的讲解

    Java多态的讲解

    java多态练习题

    java多态、继承练习题,包含题目与答案,............................................................................................................

    java 多态 经典讲解

    在Java中,多态主要通过两种方式体现:**向上转型**和**方法重写**。 #### 二、向上类型转换(upcasting) 向上类型转换是指将子类的对象赋值给父类的引用,这一过程是自动进行的,无需显式转换。例如,在上述例子中...

    java多态的总结

    理解多态的关键在于“向上转型”和“向下转型”。向上转型是指将子类对象赋值给父类引用,这是自动进行的,无须额外操作。例如: ```java Animal animal = new Cat(); // 向上转型,猫是动物的一种 animal.speak(); ...

    Java 多态中的类型转换

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

    JAVA多态图文详解ppt

    JAVA多态图文详解ppt,详细通过各种举例介绍JAVA多态的ppt

    C++和Java多态的区别

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

    Java 多态应用,掌握多态

    4. **向上转型(Upcasting)与向下转型(Downcasting)**:向上转型是指将子类对象赋值给父类引用,这是隐式的,编译器允许这么做,因为子类是父类的特例。而向下转型则是将父类引用转换为子类对象,需要显式进行,...

    简单了解Java多态向上转型相关原理

    Java 多态向上转型相关原理 多态是面向对象的第三大特征,它有三个优点:改善代码的组织结构和可读性、能够创建可扩展的程序、消除类型之间的耦合关系。多态的概念主要体现在向上转型中,Java 允许把子类对象赋值给...

    java基础-java多态详解

    Java 多态详解 Java 多态是 Java 编程语言中的一种基本概念,它允许开发者定义一个接口,并且可以通过不同的类来实现该接口。多态性是 Java 面向对象编程的核心机制之一,它使得程序更加灵活、可维护和可扩展。 ...

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

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

    10-JAVA-多态

    JAVA多态思维导图,便捷整理思路,多态的好处、多态的语法格式、多态中的两种类型转换:向上转型、向下转型

    java多态理解

    Java多态理解 java中的多态性是面向对象编程的精髓所在。多态性是指父类引用指向子类对象,例如父类...java中的多态性是通过向上转型和动态链接来实现的。多态性可以降低程序的耦合性,提高程序的灵活性和可维护性。

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

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

    java多态小结

    在Java中,多态主要体现在两个方面:**编译时类型与运行时类型的不同**以及**对象的向上转型和向下转型**。 #### 编译时类型与运行时类型 在Java中,每个引用变量都有两种类型:**编译时类型**和**运行时类型**。...

    java 多态的泛型实现

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

    java多态实验

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

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

    Java多态是面向对象编程中的一个核心特性,它允许我们以一种统一的方式处理不同类型的对象。在Java中,多态性主要通过继承、接口和方法...了解这些底层原理有助于我们更好地设计和优化Java程序,以利用多态带来的好处。

    java的编译时多态和运行时多态

    Java 编译时多态和运行时多态 Java 编译时多态和运行时多态是 Java 语言中两个重要的概念,它们都是多态性的实现方式,但它们在实现机制和应用场景上有所不同。 编译时多态 编译时多态是指在编译期根据参数列表的...

    java多态作业

    在给定的“java多态作业”中,可以看到多态性的应用主要体现在实现多个接口(MouseMotionListener、MouseListener和ActionListener),这些接口代表了不同的事件监听器,每个接口都定义了一系列方法来处理特定类型的...

Global site tag (gtag.js) - Google Analytics