Java动态绑定与静态绑定
Java动态绑定来自于继承体现,子类继承父类,子类重新覆盖了父类的方法,就是动态绑定,以下举例:
(动态绑定是在运行期间)
动物类:
/**
* 创建一个动物类
* @author Liudeli
*/
public class Animal {
/**
* 此函数打印一句话,显示样式
*/
public void showStyle() {
System.out.println("Animal showStyle()...");
}
}
人类:
/**
* 定义一个人类
* @author Liudeli
*/
public class Person extends Animal{
/**
* 重写父类的 showStyle 方法
*/
public void showStyle() {
System.out.println("Person showStyle()...");
}
}
狗类:
/**
* 定义一个狗类
* @author Liudeli
*/
public class Dog extends Animal{
/**
* 重写父类 showStyle 方法
*/
public void showStyle() {
System.out.println("Dog showStyle()...");
}
}
测试程序:
/**
* 测试程序
* @author Liudeli
*/
public class Main {
public static void main(String[] args) {
// 当父类引用去实例化子类,会执行子类中的方法,这个过程就是动态加载
Animal person = new Person();
person.showStyle();
Animal dog = new Dog();
dog.showStyle();
}
}
运行结果:
静态绑定:
(静态绑定是在编译期间)
/**
* 定义动物类
* @author Liudeli
*/
class Animal {};
/**
* 定义人类继承动物类
* @author Liudeli
*/
class Person extends Animal {};
/**
* 定义够累继承动物类
* @author Liudeli
*/
class Dog extends Animal {};
/**
* 此类包含了执行父类子类
* @author Liudeli
*/
public class MyRun {
public void showMethod(Animal animal) {
System.out.println("Animal showMethod()...");
}
/**
* 方法重载
* @param dog
*/
public void showMethod(Person person) {
System.out.println("Person showMethod()...");
}
/**
* 方法重载
* @param dog
*/
public void showMethod(Dog dog) {
System.out.println("Dog showMethod()...");
}
}
测试程序:
/**
* 测试程序
* @author Liudeli
*/
public class Main {
public static void main(String[] args) {
MyRun myRun = new MyRun();
myRun.showMethod(new Animal());
myRun.showMethod(new Dog());
myRun.showMethod(new Person());
}
}
运行结果:
其实在程序编译的时候就决定会使用 showMethod(Animal animal) {}方法,不管在运行的时候传入的实际对象是什么,还是会执行 showMethod(Animal animal) {}方法,Java重载是静态绑定的。
以上还有很多不足之处,还没有来得及完善,谢谢大家观看!!!!!!!
谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
刘德利CSDN博客, http://blog.csdn.net/u011967006
Java动态绑定与静态绑定的更多相关文章
- Java动态绑定和静态绑定-多态
一.问题 Java方法调用过程中,Jvm是如何知道调用的是哪个类的方法?Jvm又是如何处理? 二.概念 a.当子类和父类(接口和实现类)存在同一个方法时,子类重写父类(接口)方法时,程序在运行时调 ...
- java动态绑定与静态绑定【转】
程序绑定的概念: 绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来.对java来说,绑定分为静态绑定和动态绑定:或者叫做前期绑定和后期绑定.静态绑定: 在程序执行前方法已经被绑定(也就是说在 ...
- 关于继承的基本知识,方法重写,final和abstract的使用, 动态绑定和静态绑定的知识
一.继承: 涉及关键字: extends(继承) super final abstract 特点: 1.类与类之间可以用 XX是XX来描述 , 那么他们之间就存在继承关系. 2.Java中不支持多继 ...
- 深入理解C++的动态绑定和静态绑定【转】
转自:http://blog.csdn.net/chgaowei/article/details/6427731 为了支持c++的多态性,才用了动态绑定和静态绑定.理解他们的区别有助于更好的理解多态性 ...
- c++动态绑定与静态绑定
C++为了支持多态性,采用了动态绑定和静态绑定 相关概念: 对象的静态类型:对象在声明时采用的类型,编译时确定 对象的动态类型:目前所指对象的类型,在运行时确定 class B { } class C ...
- 再次探讨C++的动态绑定和静态绑定
以前在学习C++的时候,对动态绑定和静态绑定的理解是:静态绑定是编译时决定的,非虚函数基本都是静态绑定:而动态绑定用于虚函数,是为了实现多态.这样理解没什么大的问题,但我一直疑惑的是,既然静态绑定可以 ...
- c++的动态绑定和静态绑定
为了支持c++的多态性,才用了动态绑定和静态绑定. 1.对象的静态类型:对象在声明时采用的类型.是在编译期确定的. 2.对象的动态类型:目前所指对象的声明.在运行期决定.对象的动态类型可以更改,但是静 ...
- 【转】深入理解C++的动态绑定和静态绑定 & 不要重定义虚函数中的默认参数
为了支持c++的多态性,才用了动态绑定和静态绑定.理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误.需要理解四个名词:1.对象的静态类型:对象在声明时采用的类型.是在编译期确定的.2 ...
- C++ 多态Polymorphism 介绍+动态绑定、静态绑定
什么是多态? 多态(polymorphism)一词最初来源于希腊语polumorphos,含义是一种物质的多种形态. 在专业术语中,多态是一种运行时绑定机制(run-time binding) ,通过 ...
随机推荐
- dubbo dubbo.xsd 报错
构建dubbo项目的时候会遇到: Multiple annotations found at this line: - cvc-complex-type.2.4.c: The matching wil ...
- azkaban编译安装配置文档
azkaban编译安装配置文档 参考官方文档: http://azkaban.github.io/azkaban/docs/latest/ azkaban的配置文件说明:http://azkaban. ...
- sqldatareader无法得到output参数的解决
只需要在所有的sqldatareader结束后,加上一句就可以得到输出参数了. sdr.Close(); Object ObjCount = cmd.Parameters["@Count_P ...
- padding-top和margin-top的区别
学习前端知识,对我们查找页面元素很有帮助,而且自己在原公司时,有参与一个QA系统,自己去设计了这个产品,出了原型图,同时设计了几个页面,希望通过做这个产品提高自己的技术,可是因为离职,所以计划搁浅了, ...
- socket.io api 总结
server 端const io = require('socket.io')(8000, { // path: '/socket', pingInterval: 10000, pingTimeout ...
- spring security 非页面登录
参考https://stackoverflow.com/questions/36937414/auto-login-spring-security UserDetails userDetails = ...
- java并发:AQS的简单理解
简介: AQS全称 AbstractQueuedSynchronizer,提供了一个基于FIFO(先进先出)队列,可以用于构建锁或者其他相关同步装置的基础框架. ReentrantLock.Semap ...
- android笔记:BroadcastReceiver
android允许应用程序自由地发送和接收广播. 广播是通过Intent进行数据传递的.接收广播则通过Broadcast Receiver(广播接收器)实现. 广播分为:标准广播和有序广播. 标准广播 ...
- 转)Ubuntu安装mysql5.7
主要参考http://blog.csdn.net/q894523017/article/details/50705392 包去官网下载,解压,安装步骤如下: 上文中有错误,正确如下: sudo dpk ...
- centos 6.5 ftp服务配置及客户端使用
一.ftp服务简介 FTP是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Ap ...