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()方法。

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

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

  • 相关阅读:
    linux常用命令全拼
    foxmail怎么设置个性签名
    linux下kerberos教程
    linux解压war包的命令
    Jenkins部署Web项目到远程tomcat(通过jenkins插件)
    Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
    windows下命令行终端使用rz上传文件参数详解
    svn 命令行下常用的几个命令
    性能测试指标及解释
    性能测试的分类及各分类理解
  • 原文地址:https://www.cnblogs.com/sxmcACM/p/3876295.html
Copyright © 2011-2022 走看看