博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
虚拟方法调用
阅读量:5231 次
发布时间:2019-06-14

本文共 1685 字,大约阅读时间需要 5 分钟。

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

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

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

 

转载于:https://www.cnblogs.com/sxmcACM/p/3876295.html

你可能感兴趣的文章
java的Array和List相互转换
查看>>
layui父页面执行子页面方法
查看>>
如何破解域管理员密码
查看>>
Windows Server 2008 R2忘记管理员密码后的解决方法
查看>>
IE11兼容IE8的设置
查看>>
windows server 2008 R2 怎么集成USB3.0驱动
查看>>
Foxmail:导入联系人
查看>>
vue:axios二次封装,接口统一存放
查看>>
vue中router与route的区别
查看>>
js 时间对象方法
查看>>
网络请求返回HTTP状态码(404,400,500)
查看>>
Spring的JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate
查看>>
Mac下使用crontab来实现定时任务
查看>>
303. Range Sum Query - Immutable
查看>>
图片加载失败显示默认图片占位符
查看>>
【★】浅谈计算机与随机数
查看>>
《代码阅读方法与实现》阅读笔记一
查看>>
解决 sublime text3 运行python文件无法input的问题
查看>>
javascript面相对象编程,封装与继承
查看>>
Atlas命名空间Sys.Data下控件介绍——DataColumn,DataRow和DataTable
查看>>