这里的动态指的是类的动态装载,我的理解是在程序运行时才确定要把哪个类给装载进去。但实际上真正的动态要把这个简单的理解要丰富的多。因为动态装载可以发生在主程序,当需要的时候去把这个装载进来,这个类可以是需要使用的时候才去编译的。所以动态装载能够是程序变得更加灵活。
下面我们先了解一下静态绑定和动态绑定。比如我有一个student接口。如下
/** * 这是一个学生接口 *接口里面有一个获得学生名字和学生成绩的方法 */ public interface Studtent { public String getName();//获得学生名字的方法 public double getSorce();//获得学生成绩的方法 }
然后我在写一个大学生类,它实现类这个学识接口
public class Unistudent implements Studtent{ private String name;//学生的名字 Private double socre;//学生的成绩 public Unistudent (){ This.name=”大学生”; This.score=60; } /** * 实现获得学生的姓名的方法 */ public String getName() { return name; } /** * 获得学生成绩的方法 */ public double getSorce() { return socre; } }
然后我再实现一个小学生类
<!--EndFragment-->
public class Pristudent implements Studtent{ private String name;//学生的名字 Private double socre;//学生的成绩 public Pristudent (){ This.name=”小学生”; This.score=90; } /** * 实现获得学生的姓名的方法 */ public String getName() { return name; } /** * 获得学生成绩的方法 */ public double getSorce() { return socre; } }
当我要创建一个学生对象是我可以这样来创建
Studtent stu=new Unistudent(); stu.getName();
这就是静态绑定,即编译的时候就确定了它的类型,如果需要该成一个小学生类,我不需得改变这段代码,然后重新编译。
Studtent stu=new Prstudent(); stu.getName();
这显然不是很好,可不可以不改变代码,也不用重新编译,就可以实现呢,当然是可以的,这得用到动态编译。
Class c=Class.forName(classname);//装载类 Object obj=c.newInstance();//调用无参构造方法生产对象 Student stu=(Student )obj;//强制转型 stu.getName();
同过上面的方法,只需要传入类名(classname),就可以实现动态加载我们所需要的类了。
<!--EndFragment-->
<!--EndFragment-->
<!--EndFragment-->
<!--EndFragment--><!--EndFragment--><!--EndFragment-->
相关推荐
### VB6.0 动态加载 ActiveX 控件解析 #### 概述 在VB6.0编程环境中,动态加载ActiveX控件是一项非常实用且强大的功能。它允许程序员在运行时动态添加、配置和使用各种ActiveX控件,极大地提高了程序的灵活性和可...
动态加载控件是指在程序运行时根据需求创建和添加新的控件,而不是在编写代码时预设所有控件。这种技术可以用于创建可扩展的用户界面,例如,当用户执行特定操作时,可以添加新的输入字段或按钮。 在QVBoxLayout或...
然而,动态加载内容意味着我们需要在运行时添加或更新Spinner的数据。这可以通过调用适配器的方法来完成,如`add()`、`insert()`、`clear()`和`notifyDataSetChanged()`。比如,我们可以从网络或者数据库获取数据,...
在IT领域,动态加载是一种优化用户体验的技术,尤其在处理大量数据时显得尤为重要。动态加载树(Tree)和动态加载表格(Table)是两种常见的数据展示方式,它们在网页应用中广泛使用,特别是在需要显示层级结构数据...
### Drools从字符串中动态加载规则 在使用Drools规则引擎时,有时我们需要实现更加灵活的规则管理方式。例如,在开发过程中,我们可能希望不通过每次修改代码或重启服务来更新业务规则,而是能够在运行时动态地更改...
动态添加选项卡和`Frame`是提高用户界面灵活性的重要方法,允许应用程序根据需求在运行时创建新的视图。下面我们将详细探讨如何在WPF中实现这一功能。 首先,我们需要理解`TabControl`的基本结构。`TabControl`由一...
"ListView实现动态加载"这个主题,涉及到的是如何高效地处理大量数据并根据用户滚动时动态加载更多内容的技术。动态加载通常用于节省内存,提高用户体验,避免一次性加载过多数据导致应用卡顿。 1. **ListView基础*...
在Vue.js应用开发中,有时候我们可能需要动态加载JavaScript资源,比如某些库或者插件只在特定场景下使用,为了优化性能,不希望一开始就加载。Vue动态加载JS是一种实现这一需求的技术,它允许我们在运行时根据需要...
### Vue动态加载外部JS代码实现 #### 概述 在前端开发中,有时我们需要动态地加载外部JavaScript库或脚本文件。特别是在构建大型Vue应用程序时,可能会遇到需要按需加载某些功能的情况,例如第三方库、API接口等。...
2. **动态加载**: 可以根据实际需求,在运行时动态地调用 `AddContextMenu` 方法来添加新的菜单项。 3. **安全性**: 当使用反射机制 (`Activator.CreateInstance`) 来实例化新窗体时,确保所传入的类型是安全可信的...
在官方版本中,虽然提供了丰富的功能,但并未直接支持动态加载或懒加载。动态加载(也称为懒加载)是一种优化性能的技术,只在用户需要时才加载数据,而不是一次性加载所有数据,这对于处理大量数据或层级结构尤其...
水晶报表动态加载图片技术详解 水晶报表是一种常用的报表生成工具,但是在实际应用中,,我们经常需要在报表中加载图片,但是水晶报表并不支持直接加载图片文件。为了解决这个问题,我们可以使用动态加载图片的技术...
在"layui,登陆,左侧菜单实现"这个主题中,我们将深入探讨如何利用LayUI来创建动态加载的左侧菜单以及集成tab组件,以实现一个完整的登录功能和页面导航。 首先,我们需要了解LayUI的基础结构。LayUI的核心是layui...
标题提到的“动态添加控件”是LabVIEW的一项重要特性,允许用户在程序运行时动态地向用户界面(Front Panel)添加、修改或删除控件,增强了程序的灵活性和交互性。 动态添加控件通常涉及以下知识点: 1. **VI引用*...
在本实例中,我们将深入探讨如何利用`dev gridControl`实现动态加载列的功能。 动态加载列意味着可以根据用户的需求或者程序的逻辑,在运行时决定显示哪些列以及列的属性。这种特性在处理复杂数据模型或者需要...
ScrollView动态加载资源节省动态更新!
总结起来,实现`wpf mvvm treeview`动态加载、重命名和右键添加功能,我们需要: 1. 创建`TreeViewNode`类和`ViewModel`,并使用`ObservableCollection`存储数据。 2. 使用数据绑定将`ViewModel`的数据映射到`...
在Unity3D游戏开发中,动态加载资源是提高性能和优化用户体验的重要技术。尤其是在处理大量图像资源时,如Texture2D,动态加载可以避免在游戏启动时一次性加载所有资源导致的加载时间过长。本文将深入讲解如何在...
在Unity3D游戏开发中,动态加载文本数据是一项常见的需求,尤其在实现玩家自定义功能、NPC交互等场景中,需要从外部数据文件获取信息。本文主要探讨如何在Unity中有效地读取和处理文本数据。 首先,对于Unity项目中...
在C#编程中,动态加载是一项关键特性,它允许程序在运行时根据需要加载和使用资源,如控件、类库或数据。本教程将详细讲解如何动态加载pictureBox控件到listView控件中,这对于创建灵活且可扩展的用户界面(UI)尤其...