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) ,通过 ...
随机推荐
- django1.8模板位置的设置setting.py
大多数django教程比较老,给出的template的设置方案为: 更改工程下的setting.py文件, TEMPLATE_DIRS = ( os.path.join( APP_DIR, ' ...
- BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource
Tomcat报错如下: BeanDefinitionStoreException: IOException parsing XML document from ServletContext resou ...
- UVa 1595 Symmetry(set)
We call a figure made of points is left-right symmetric as it is possible to fold the sheet of paper ...
- Python反转
1切片 s="svdfbffdbdf" a=s[::-1] 2入栈出栈 入栈之后再出栈正好就是了 3reverse 这个函数是列表的....你要先把str转成list list-& ...
- Mac 终端便利工具: 管理工具-Homebrew 和提示工具oh my zsh
命令行提示工具 第一步: Homebrew - 安装与使用 https://blog.csdn.net/sir_coding/article/details/77509602 Homebrew安装问题 ...
- php Pthread 多线程 (四) 共享内存
有些时候我们希望在多个线程中共享一些需要的数据,我们可以使用shmop扩展. <?php class Count extends Thread { private $name = ''; pub ...
- linux配置网络
1.配置网络信息 linux系统的第一块网卡信息 /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE 设备名 ONBOOT 系统启动后是否自动启动网卡设备 ...
- VC2008 类型重定义的问题
Q: 比如"a.h"里定义了类a,类a所有函数的实现都放在"a.cpp"里.然后"b.h"和"c.h"都需要用到类a,所 ...
- 【原创】Silverlight的ComboBox.SelectValue无法赋值
前几天开发中 给ComboBox的SelectValue属性赋值是,老是赋不上去.之前SelectValue为Null,执行完调试看下,还是Null.很诡异 ComboBox的SelectVa ...
- eclipse缓存太重,新手最容易中招
有4种方法,从上到下清理: