zoukankan      html  css  js  c++  java
  • 虚拟方法调用

    1.虚拟方法调用也叫动态绑定

    2.具体是什么用代码来说明

    Person类

     1 package com.alibaba.com.miao;
     2 
     3 public class Person {
     4 
     5     protected String name;
     6     protected int age;
     7 
     8     public String getName() {
     9         return name;
    10     }
    11 
    12     public void setName(String name) {
    13         this.name = name;
    14     }
    15 
    16     public int getAge() {
    17         return age;
    18     }
    19 
    20     public void setAge(int age) {
    21         this.age = age;
    22     }
    23 
    24     public Person(String name, int age) {
    25         super();
    26         this.name = name;
    27         this.age = age;
    28     }
    29 
    30     public Person() {
    31 
    32     }
    33 
    34     public String getInfo() {
    35         return "Person [name=" + name + ", age=" + age + "]";
    36     }
    37 
    38 }
    View Code

    Student类继承Person类

    1 package com.alibaba.com.miao;
    2 
    3 public class Student extends Person {
    4     public String getInfo() {
    5         return "Student [name=" + name + ", age=" + age + "]";
    6     }
    7 }
    View Code

    Test测试类

     1 package com.alibaba.com.miao;
     2 
     3 public class Test {
     4 
     5     public static void main(String[] args) {
     6         //没有使用虚拟方法调用
     7         Person p = new Person();
     8         p.setAge(20);
     9         p.setName("super hacker");
    10         System.out.println(p.getInfo());
    11         
    12         Student stu = new Student();
    13         stu.setAge(21);
    14         stu.setName("geek");
    15         System.out.println(stu.getInfo());
    16         //使用虚拟方法调用
    17         Person p1 = new Student();
    18         p1.setAge(19);
    19         p1.setName("me");
    20         System.out.println(p1.getInfo());
    21     }
    22 }
    View Code

    由此可见:

      编译时p1为Person类型,而方法的调用是在运行时确定的,所以调用的是Student类的getInfo()方法。

    这样做的好处可以降低类之间的耦合性。

    虚拟方法调用--在多态下使用

  • 相关阅读:
    二维数组实现八皇后问题
    解决Java接口内部类的main()方法无法打印输出的问题
    hbase shell 常见命令
    hbase-0.94 Java API
    JavaMail简单版实验测试
    经典KMP算法C++与Java实现代码
    Hadoop之倒排索引
    哈希哈希
    Servlet和JSP学习指导与实践(三):JSP助阵
    Servlet和JSP学习指导与实践(二):Session追踪
  • 原文地址:https://www.cnblogs.com/sxmcACM/p/3876295.html
Copyright © 2011-2022 走看看