Java动态绑定与静态绑定

时间:2023-03-09 21:15:42
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(); } }

运行结果:

Java动态绑定与静态绑定



静态绑定:

静态绑定是在编译期间

/**
* 定义动物类
* @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()); } }

运行结果:

Java动态绑定与静态绑定


其实在程序编译的时候就决定会使用 showMethod(Animal animal) {}方法,不管在运行的时候传入的实际对象是什么,还是会执行 showMethod(Animal animal) {}方法,Java重载是静态绑定的。

以上还有很多不足之处,还没有来得及完善,谢谢大家观看!!!!!!!


谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,

刘德利****博客, http://blog.****.net/u011967006