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) ,通过 ...
随机推荐
- linux 常用find
磁盘查找文件内容: find .|xargs grep x find . -exec grep x{} \; 磁盘查找文件名称: find / -name "httpd.conf" ...
- MySql LeftJoin On 与 Where的差异
[MySql LeftJoin On 与 Where的差异] 存在两张表: 分别插入数据: 下面的语句一与语句二会产生不同的结果: 语句一: 结果: 语句二: 结果: 为什么会存在差异,这和on与wh ...
- long类型与int类型的转换
在数据库中会出现,numberic转换为int出错 在网站中,提交form的时候出现long转int失败会报错,跌了两次坑,还有ajax提交的时候long转int会报错.
- python简单基础代码
1.从键盘输入两个数,并计算A的B次幂:number1=raw_input('input number1:')number2=raw_input('input number2:')print 'num ...
- Excel Sheet Column Title (STRING - TYPE CONVERTION)
QUESTION Given a positive integer, return its corresponding column title as appear in an Excel sheet ...
- android环境安装及配置
直接从网上下载适合当前系统的jdk(eclipse需要一个java虚拟器的环境) 直接从android上下载最新的adt-bundle-windows-x86(64)-xxxxxx.zip(集成好的e ...
- Devexpress ChartControl 柱状图简单例子
//using DevExpress.XtraEditors; //using DevExpress.XtraCharts; // Create an empty chart. ChartContro ...
- Linux系统 SecureCRT SecureFX 注册破解方法
1.创建脚本文件crack-binary.sh,内容如下: #!/bin/sh cd $1 cat SecureCRT | od -A n -v -t x1 | tr -d ' \n ...
- SNP/单核苷酸多态性分析
SNP/单核苷酸多态性分析 SNP(Single Nucleotide Polymorphism),即单核苷酸多态性,是由于单个核苷酸改变而导致的核酸序列多态.一般来说,一个SNP位点只有两种等位基因 ...
- 局域网2台机器访问mysql服务器