SlideShare a Scribd company logo
1 of 13
Polymorphism
Agenda
•   概述
•   关于耦合
•   RE - 向上类型转换
•   多态
•   Pitfall: private方法
•   Pitfall: 属性和静态方法
•   扩展
•   向下转型
•   Object getClass()
概述
• 多态, 又称动态绑定(Dynamic binding), 是
  OO(面向对象)中继数据抽象(data abstraction)
  和 继承(inheritance)之后的第三大特性;
• 多态为分离”接口与实现”提供了可能, 这样
  能够极大程度的降低程序模块之间的耦合
  性.
关于耦合
• 耦合是指如果程序A依赖于程序B的实现, 那么
  程序A/B之间存在耦合关系; 耦合会导致程序的
  灵活性大幅下降, 考虑这样一个系统:
 模块(Module)A依赖于子模块B的实现, 先如今由于某
  些
 需求需要使用另一种方式实现子模块B, 由于A与B之
  间
 紧密耦合导致A模块也需要作相应的修改.
• 解耦是指通过更加优良的设计来降低程序之间
  的耦合性, 在java中可以通过接口(interface)/继
  承/多态等特性来达到低耦合的设计;
RE - 向上类型转换
                                 Upcasting
•    向上类型转换是指引用可以指向该类及其子类的所有对象, 比如, 按照如下继承关系:

           Class A       A a = new A();
                         a = new B();
                         a = new C();     // A的引用可以指向A/B/C
                         B b = new C();
           Class B
                         C c = new C();


           Class C


• 方法在声明时可以指定某个基类或者接口(比如A), 而在调用时则可以
  传入相应的具体实现(比如B/C), eg:
// 方法声明
void f(A a) {......}
// 调用
A a = new B();
f(a);
f(new C())
多态
• 方法绑定(method-call binding)是指将方法调用与方
   法体联系在一起;
• 分为两种类型
1), 静态绑定(early binding)
指在编译阶段, 指定某个方法调用执行某个方
法体;
2), 动态绑定(dynamic binding)
也称late binding, 是指在运行时根据具体的类型
来决定方法调用执行具体哪一个方法的定义. 动
态绑定是java采用的一种方法绑定方式, 所谓的多态也
就是指方法动态绑定;
多态
• 由于Upcasting特性, 方法(比如:void f(A))在调用时输入的实参(比如: p1)
    有可能是不同的具体实现类型: 形参类型本身(class A)及其子类型(class
    B); 考虑这样一个问题: 如果在方法(f)内调用该实参(p1)的某个方法(比
    如: pf), 那么最终调用的是class A还是class B上面的实现? 示例:
class A {
    void pf()...
}
class B extends A {
    void pf() ... // override
}
class C {
    f(A p1) ...   // 形参类型是A
}
// 使用
C c = new C();
A a = new B();
c.f(a);           // 这里会调用class A里面的pf实现还是class B的?
多态
• 根据对方法动态绑定(多态)的解释, 可以确
  定在上面的示例中由于运行时具体类型是B,
  因此会调用class B中定义的pf方法.
• 这就是多态: 运行时根据具体类型的不同,
  决定不同的方法调用, 从而体现出不同的行
  为;
• 示例: demo/Demo1.java
Pitfall: private方法
• 在《 7, Reusing Classes 》章节中讲到private方法默认是final, 因
     此不能被覆盖;
• 示例:
public class PrivateOverride {
   private void f() { print("private f()"); }
   public static void main(String[] args) {
      PrivateOverride po = new Derived();
      po.f(); // output: private f();
   }
}
class Derived extends PrivateOverride {
   public void f() { print("public fs()"); }
}
• 示例: demo/PrivateOverride.java
Pitfall: 属性和静态方法
• 对于类属性以及静态方法, 不会有多态行为;
• 示例:
class A {
    public int i = 1;
    public static void f()...
}
class B extends A {
    public int i = 2;
    public static void f()...

    public static void main(String[] args) {
          A a = new B();
          System.out.println(a.i);
          a.f();                          //
    }
}
•   示例: demo/Demo2.java
•   示例: demo/Demo3.java
扩展
• 子类可以覆盖父类的方法, 同时也可以通过添加其他的方法进行扩展;
    比如:
class A {
    void f()...
    void g() ...
}
class B extends A {
    void m()...   // m, n方法是一种扩展
    void n()...
}
• 结合向上转型和多态, 可以通过父类的接口调用子类的方法, 比如:
A a= new B();
a.f();
a.g(); // 运行时与B中的方法进行绑定
但是不能调用子类扩展的其他方法,
a.m();
a.n(); // 编译错误
向下转型
• 向上转型导致具体类型信息的丢失, 进而导
  致无法调用子类扩展的其他方法; 这时候就
  需要做”向下转型”操作; 参照上一页的示例:
((B)a).m();
((B)a).n();         // ok
• 向下转型不总是一个安全的操作, 如果对象
  的类型与目标类型不同那么会抛出
  ClassCastException异常;
• 示例: demo/Demo4.java
Object getClass()
• 在Object基类中定义了Class getClass()方法用
  于返回对象的具体类型信息; Class类对应的
  是java编译后的.class文件, 该类提供了一些
  接口用于获取该类的名称, 属性, 方法等运行
  时信息, 参考链接:
1), String getName() 返回类名(包含包信息), 比如demo.B;
2), Package getPackge() 返回包
3), Method[] getMethods() 返回定义的方法
......
• 示例: demo/Demo4.java

More Related Content

What's hot

程式設計師的自我修養 Chapter 10 記憶體
程式設計師的自我修養 Chapter 10 記憶體程式設計師的自我修養 Chapter 10 記憶體
程式設計師的自我修養 Chapter 10 記憶體Shu-Yu Fu
 
Gobject - Inherit (Chinese)
Gobject - Inherit (Chinese)Gobject - Inherit (Chinese)
Gobject - Inherit (Chinese)Kai-Feng Chou
 
C語言 第4章 基本輸出與輸入功能
C語言 第4章 基本輸出與輸入功能C語言 第4章 基本輸出與輸入功能
C語言 第4章 基本輸出與輸入功能shademoon
 
C語言 第三章 03 運算子、運算元與運算式
C語言 第三章 03 運算子、運算元與運算式C語言 第三章 03 運算子、運算元與運算式
C語言 第三章 03 運算子、運算元與運算式shademoon
 
C語言 第五章 程式流程控制
C語言 第五章 程式流程控制C語言 第五章 程式流程控制
C語言 第五章 程式流程控制shademoon
 
Intro to C++ Basic
Intro to C++ BasicIntro to C++ Basic
Intro to C++ BasicShih Chi Lin
 
C#语言的演化
C#语言的演化C#语言的演化
C#语言的演化TerabyteX
 

What's hot (7)

程式設計師的自我修養 Chapter 10 記憶體
程式設計師的自我修養 Chapter 10 記憶體程式設計師的自我修養 Chapter 10 記憶體
程式設計師的自我修養 Chapter 10 記憶體
 
Gobject - Inherit (Chinese)
Gobject - Inherit (Chinese)Gobject - Inherit (Chinese)
Gobject - Inherit (Chinese)
 
C語言 第4章 基本輸出與輸入功能
C語言 第4章 基本輸出與輸入功能C語言 第4章 基本輸出與輸入功能
C語言 第4章 基本輸出與輸入功能
 
C語言 第三章 03 運算子、運算元與運算式
C語言 第三章 03 運算子、運算元與運算式C語言 第三章 03 運算子、運算元與運算式
C語言 第三章 03 運算子、運算元與運算式
 
C語言 第五章 程式流程控制
C語言 第五章 程式流程控制C語言 第五章 程式流程控制
C語言 第五章 程式流程控制
 
Intro to C++ Basic
Intro to C++ BasicIntro to C++ Basic
Intro to C++ Basic
 
C#语言的演化
C#语言的演化C#语言的演化
C#语言的演化
 

Viewers also liked

8th PreAlg - L68--March12
8th PreAlg - L68--March128th PreAlg - L68--March12
8th PreAlg - L68--March12jdurst65
 
8th Alg - April12
8th Alg - April128th Alg - April12
8th Alg - April12jdurst65
 
8 razones para_no_ir_al_zoologico
8 razones para_no_ir_al_zoologico8 razones para_no_ir_al_zoologico
8 razones para_no_ir_al_zoologicoblanca_1955
 
8th grade lesson one
8th grade lesson one8th grade lesson one
8th grade lesson oneWanda Hunt
 
8th alg -l5.3--dec17
8th alg -l5.3--dec178th alg -l5.3--dec17
8th alg -l5.3--dec17jdurst65
 
8th Alg - Jan25
8th Alg - Jan258th Alg - Jan25
8th Alg - Jan25jdurst65
 
8.mejoramiento del valor nutricional de plantas
8.mejoramiento del valor nutricional de plantas8.mejoramiento del valor nutricional de plantas
8.mejoramiento del valor nutricional de plantastinieblas001
 
8th alg -dec19
8th alg -dec198th alg -dec19
8th alg -dec19jdurst65
 
8th pre alg -jan16
8th pre alg -jan168th pre alg -jan16
8th pre alg -jan16jdurst65
 
8NE Newspaper article 5.5.2016
8NE Newspaper article 5.5.20168NE Newspaper article 5.5.2016
8NE Newspaper article 5.5.2016Jeremy Tang
 
8th PreAlg - Jan11
8th PreAlg - Jan118th PreAlg - Jan11
8th PreAlg - Jan11jdurst65
 
8 giu 2010 post elezioni provinciali e scissione 5 - sanna traditore
8 giu 2010   post elezioni provinciali e scissione 5 - sanna traditore8 giu 2010   post elezioni provinciali e scissione 5 - sanna traditore
8 giu 2010 post elezioni provinciali e scissione 5 - sanna traditoreparaulas
 
8th PreAlg - L66--Mar1
8th PreAlg - L66--Mar18th PreAlg - L66--Mar1
8th PreAlg - L66--Mar1jdurst65
 
8th chapter 3 structure of atom.
8th chapter 3 structure of atom.8th chapter 3 structure of atom.
8th chapter 3 structure of atom.Karnataka OER
 
8 inch extension_arm_for_lcd_pole_system_products
8 inch extension_arm_for_lcd_pole_system_products8 inch extension_arm_for_lcd_pole_system_products
8 inch extension_arm_for_lcd_pole_system_productsSharm Cressey
 
8 planetaren kudeaketa iraunkorra
8 planetaren kudeaketa iraunkorra8 planetaren kudeaketa iraunkorra
8 planetaren kudeaketa iraunkorrapiedad pelaz
 

Viewers also liked (20)

8. guía as secundaria.
8.  guía as secundaria.8.  guía as secundaria.
8. guía as secundaria.
 
8th PreAlg - L68--March12
8th PreAlg - L68--March128th PreAlg - L68--March12
8th PreAlg - L68--March12
 
8 stage 4.2_bmi
8 stage 4.2_bmi8 stage 4.2_bmi
8 stage 4.2_bmi
 
8th Alg - April12
8th Alg - April128th Alg - April12
8th Alg - April12
 
8 razones para_no_ir_al_zoologico
8 razones para_no_ir_al_zoologico8 razones para_no_ir_al_zoologico
8 razones para_no_ir_al_zoologico
 
8. rpp. 8
8. rpp. 88. rpp. 8
8. rpp. 8
 
8th grade lesson one
8th grade lesson one8th grade lesson one
8th grade lesson one
 
8th alg -l5.3--dec17
8th alg -l5.3--dec178th alg -l5.3--dec17
8th alg -l5.3--dec17
 
8th Alg - Jan25
8th Alg - Jan258th Alg - Jan25
8th Alg - Jan25
 
8.mejoramiento del valor nutricional de plantas
8.mejoramiento del valor nutricional de plantas8.mejoramiento del valor nutricional de plantas
8.mejoramiento del valor nutricional de plantas
 
8th alg -dec19
8th alg -dec198th alg -dec19
8th alg -dec19
 
8th pre alg -jan16
8th pre alg -jan168th pre alg -jan16
8th pre alg -jan16
 
8NE Newspaper article 5.5.2016
8NE Newspaper article 5.5.20168NE Newspaper article 5.5.2016
8NE Newspaper article 5.5.2016
 
8.rita budapeste
8.rita budapeste8.rita budapeste
8.rita budapeste
 
8th PreAlg - Jan11
8th PreAlg - Jan118th PreAlg - Jan11
8th PreAlg - Jan11
 
8 giu 2010 post elezioni provinciali e scissione 5 - sanna traditore
8 giu 2010   post elezioni provinciali e scissione 5 - sanna traditore8 giu 2010   post elezioni provinciali e scissione 5 - sanna traditore
8 giu 2010 post elezioni provinciali e scissione 5 - sanna traditore
 
8th PreAlg - L66--Mar1
8th PreAlg - L66--Mar18th PreAlg - L66--Mar1
8th PreAlg - L66--Mar1
 
8th chapter 3 structure of atom.
8th chapter 3 structure of atom.8th chapter 3 structure of atom.
8th chapter 3 structure of atom.
 
8 inch extension_arm_for_lcd_pole_system_products
8 inch extension_arm_for_lcd_pole_system_products8 inch extension_arm_for_lcd_pole_system_products
8 inch extension_arm_for_lcd_pole_system_products
 
8 planetaren kudeaketa iraunkorra
8 planetaren kudeaketa iraunkorra8 planetaren kudeaketa iraunkorra
8 planetaren kudeaketa iraunkorra
 

Similar to 8, polymorphism

2, object oriented programming
2, object oriented programming2, object oriented programming
2, object oriented programmingted-xu
 
课题一:PHP5.3、PHP5.4的特性介绍与深度挖掘
课题一:PHP5.3、PHP5.4的特性介绍与深度挖掘课题一:PHP5.3、PHP5.4的特性介绍与深度挖掘
课题一:PHP5.3、PHP5.4的特性介绍与深度挖掘Liu Allen
 
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascriptjay li
 
Java7 fork join framework and closures
Java7 fork join framework and closuresJava7 fork join framework and closures
Java7 fork join framework and closureswang hongjiang
 
5, initialization & cleanup
5, initialization & cleanup5, initialization & cleanup
5, initialization & cleanupted-xu
 
Java面试32题
Java面试32题Java面试32题
Java面试32题yiditushe
 
Class Inheritance
Class InheritanceClass Inheritance
Class Inheritancefinian lau
 

Similar to 8, polymorphism (8)

2, object oriented programming
2, object oriented programming2, object oriented programming
2, object oriented programming
 
课题一:PHP5.3、PHP5.4的特性介绍与深度挖掘
课题一:PHP5.3、PHP5.4的特性介绍与深度挖掘课题一:PHP5.3、PHP5.4的特性介绍与深度挖掘
课题一:PHP5.3、PHP5.4的特性介绍与深度挖掘
 
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascript
 
Java7 fork join framework and closures
Java7 fork join framework and closuresJava7 fork join framework and closures
Java7 fork join framework and closures
 
5, initialization & cleanup
5, initialization & cleanup5, initialization & cleanup
5, initialization & cleanup
 
SCJP ch12
SCJP ch12SCJP ch12
SCJP ch12
 
Java面试32题
Java面试32题Java面试32题
Java面试32题
 
Class Inheritance
Class InheritanceClass Inheritance
Class Inheritance
 

More from ted-xu

11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert systemted-xu
 
10, OCP - flashback
10, OCP - flashback10, OCP - flashback
10, OCP - flashbackted-xu
 
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rmanted-xu
 
8, OCP - backup with rman
8, OCP - backup with rman8, OCP - backup with rman
8, OCP - backup with rmanted-xu
 
7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recoveryted-xu
 
6, OCP - oracle security
6, OCP - oracle security6, OCP - oracle security
6, OCP - oracle securityted-xu
 
5, OCP - oracle storage
5, OCP - oracle storage5, OCP - oracle storage
5, OCP - oracle storageted-xu
 
4, OCP - oracle networking
4, OCP - oracle networking4, OCP - oracle networking
4, OCP - oracle networkingted-xu
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance managementted-xu
 
2, OCP - installing and creating a database
2, OCP - installing and creating a database2, OCP - installing and creating a database
2, OCP - installing and creating a databaseted-xu
 
1, OCP - architecture intro
1, OCP - architecture intro1, OCP - architecture intro
1, OCP - architecture introted-xu
 
12, OCP - performance tuning
12, OCP - performance tuning12, OCP - performance tuning
12, OCP - performance tuningted-xu
 
7, business event system
7, business event system7, business event system
7, business event systemted-xu
 
6, workflow miscellaneous
6, workflow miscellaneous6, workflow miscellaneous
6, workflow miscellaneousted-xu
 
5, workflow function activity
5, workflow function activity5, workflow function activity
5, workflow function activityted-xu
 
4, workflow tables & api
4, workflow tables & api4, workflow tables & api
4, workflow tables & apited-xu
 
3, workflow in ebs
3, workflow in ebs3, workflow in ebs
3, workflow in ebsted-xu
 
2, a simple workflow
2, a simple workflow2, a simple workflow
2, a simple workflowted-xu
 
1, workflow intro
1, workflow intro1, workflow intro
1, workflow introted-xu
 
8, bes tables & api
8, bes tables & api8, bes tables & api
8, bes tables & apited-xu
 

More from ted-xu (20)

11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert system
 
10, OCP - flashback
10, OCP - flashback10, OCP - flashback
10, OCP - flashback
 
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman
 
8, OCP - backup with rman
8, OCP - backup with rman8, OCP - backup with rman
8, OCP - backup with rman
 
7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery
 
6, OCP - oracle security
6, OCP - oracle security6, OCP - oracle security
6, OCP - oracle security
 
5, OCP - oracle storage
5, OCP - oracle storage5, OCP - oracle storage
5, OCP - oracle storage
 
4, OCP - oracle networking
4, OCP - oracle networking4, OCP - oracle networking
4, OCP - oracle networking
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance management
 
2, OCP - installing and creating a database
2, OCP - installing and creating a database2, OCP - installing and creating a database
2, OCP - installing and creating a database
 
1, OCP - architecture intro
1, OCP - architecture intro1, OCP - architecture intro
1, OCP - architecture intro
 
12, OCP - performance tuning
12, OCP - performance tuning12, OCP - performance tuning
12, OCP - performance tuning
 
7, business event system
7, business event system7, business event system
7, business event system
 
6, workflow miscellaneous
6, workflow miscellaneous6, workflow miscellaneous
6, workflow miscellaneous
 
5, workflow function activity
5, workflow function activity5, workflow function activity
5, workflow function activity
 
4, workflow tables & api
4, workflow tables & api4, workflow tables & api
4, workflow tables & api
 
3, workflow in ebs
3, workflow in ebs3, workflow in ebs
3, workflow in ebs
 
2, a simple workflow
2, a simple workflow2, a simple workflow
2, a simple workflow
 
1, workflow intro
1, workflow intro1, workflow intro
1, workflow intro
 
8, bes tables & api
8, bes tables & api8, bes tables & api
8, bes tables & api
 

8, polymorphism

  • 2. Agenda • 概述 • 关于耦合 • RE - 向上类型转换 • 多态 • Pitfall: private方法 • Pitfall: 属性和静态方法 • 扩展 • 向下转型 • Object getClass()
  • 3. 概述 • 多态, 又称动态绑定(Dynamic binding), 是 OO(面向对象)中继数据抽象(data abstraction) 和 继承(inheritance)之后的第三大特性; • 多态为分离”接口与实现”提供了可能, 这样 能够极大程度的降低程序模块之间的耦合 性.
  • 4. 关于耦合 • 耦合是指如果程序A依赖于程序B的实现, 那么 程序A/B之间存在耦合关系; 耦合会导致程序的 灵活性大幅下降, 考虑这样一个系统: 模块(Module)A依赖于子模块B的实现, 先如今由于某 些 需求需要使用另一种方式实现子模块B, 由于A与B之 间 紧密耦合导致A模块也需要作相应的修改. • 解耦是指通过更加优良的设计来降低程序之间 的耦合性, 在java中可以通过接口(interface)/继 承/多态等特性来达到低耦合的设计;
  • 5. RE - 向上类型转换 Upcasting • 向上类型转换是指引用可以指向该类及其子类的所有对象, 比如, 按照如下继承关系: Class A A a = new A(); a = new B(); a = new C(); // A的引用可以指向A/B/C B b = new C(); Class B C c = new C(); Class C • 方法在声明时可以指定某个基类或者接口(比如A), 而在调用时则可以 传入相应的具体实现(比如B/C), eg: // 方法声明 void f(A a) {......} // 调用 A a = new B(); f(a); f(new C())
  • 6. 多态 • 方法绑定(method-call binding)是指将方法调用与方 法体联系在一起; • 分为两种类型 1), 静态绑定(early binding) 指在编译阶段, 指定某个方法调用执行某个方 法体; 2), 动态绑定(dynamic binding) 也称late binding, 是指在运行时根据具体的类型 来决定方法调用执行具体哪一个方法的定义. 动 态绑定是java采用的一种方法绑定方式, 所谓的多态也 就是指方法动态绑定;
  • 7. 多态 • 由于Upcasting特性, 方法(比如:void f(A))在调用时输入的实参(比如: p1) 有可能是不同的具体实现类型: 形参类型本身(class A)及其子类型(class B); 考虑这样一个问题: 如果在方法(f)内调用该实参(p1)的某个方法(比 如: pf), 那么最终调用的是class A还是class B上面的实现? 示例: class A { void pf()... } class B extends A { void pf() ... // override } class C { f(A p1) ... // 形参类型是A } // 使用 C c = new C(); A a = new B(); c.f(a); // 这里会调用class A里面的pf实现还是class B的?
  • 8. 多态 • 根据对方法动态绑定(多态)的解释, 可以确 定在上面的示例中由于运行时具体类型是B, 因此会调用class B中定义的pf方法. • 这就是多态: 运行时根据具体类型的不同, 决定不同的方法调用, 从而体现出不同的行 为; • 示例: demo/Demo1.java
  • 9. Pitfall: private方法 • 在《 7, Reusing Classes 》章节中讲到private方法默认是final, 因 此不能被覆盖; • 示例: public class PrivateOverride { private void f() { print("private f()"); } public static void main(String[] args) { PrivateOverride po = new Derived(); po.f(); // output: private f(); } } class Derived extends PrivateOverride { public void f() { print("public fs()"); } } • 示例: demo/PrivateOverride.java
  • 10. Pitfall: 属性和静态方法 • 对于类属性以及静态方法, 不会有多态行为; • 示例: class A { public int i = 1; public static void f()... } class B extends A { public int i = 2; public static void f()... public static void main(String[] args) { A a = new B(); System.out.println(a.i); a.f(); // } } • 示例: demo/Demo2.java • 示例: demo/Demo3.java
  • 11. 扩展 • 子类可以覆盖父类的方法, 同时也可以通过添加其他的方法进行扩展; 比如: class A { void f()... void g() ... } class B extends A { void m()... // m, n方法是一种扩展 void n()... } • 结合向上转型和多态, 可以通过父类的接口调用子类的方法, 比如: A a= new B(); a.f(); a.g(); // 运行时与B中的方法进行绑定 但是不能调用子类扩展的其他方法, a.m(); a.n(); // 编译错误
  • 12. 向下转型 • 向上转型导致具体类型信息的丢失, 进而导 致无法调用子类扩展的其他方法; 这时候就 需要做”向下转型”操作; 参照上一页的示例: ((B)a).m(); ((B)a).n(); // ok • 向下转型不总是一个安全的操作, 如果对象 的类型与目标类型不同那么会抛出 ClassCastException异常; • 示例: demo/Demo4.java
  • 13. Object getClass() • 在Object基类中定义了Class getClass()方法用 于返回对象的具体类型信息; Class类对应的 是java编译后的.class文件, 该类提供了一些 接口用于获取该类的名称, 属性, 方法等运行 时信息, 参考链接: 1), String getName() 返回类名(包含包信息), 比如demo.B; 2), Package getPackge() 返回包 3), Method[] getMethods() 返回定义的方法 ...... • 示例: demo/Demo4.java