这里的动态指的是类的动态装载,我的理解是在程序运行时才确定要把哪个类给装载进去。但实际上真正的动态要把这个简单的理解要丰富的多。因为动态装载可以发生在主程序,当需要的时候去把这个装载进来,这个类可以是需要使用的时候才去编译的。所以动态装载能够是程序变得更加灵活。
下面我们先了解一下静态绑定和动态绑定。比如我有一个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-->
相关推荐
WPF 实现TabControl 中动态添加选项卡、动态添加Frame
动态加载树(tree)和动态加载表格(table),很好的结合了数据库。。可以轻松的完成你所需要的功能。
listview实现动态加载数据,值得学习
实现ListCtrl控件滚动条滚动到底后动态添加 1、重载WM_VSCROLL、WM_SETCURSOR、WM_MOUSEWHEEL 2、添加采用多线程,界面不卡顿 3、添加时光标变为等待状态,添加完成后还原
这篇文章主要介绍了vue如何实现动态加载脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天在研究,tinymce富文本编辑器怎样在vue中使用,然后看到其它...
VB之精彩编程-VB6.0动态加载ActiveX控件漫谈
微信小程序动态添加一个表单模块,直接拷贝就能使用 动态添加组件 里面用到了TDesign外部框架,需要npm install 一下 很多项目都通用的功能,动态添加的view包含,input、datepikcer,checkBox多项内容 案例可借鉴性...
实现将图片动态加载到水晶报表中,解决水晶报表添加图片的问题。
主要介绍了C#实现Winform动态添加菜单的方法,涉及C#操作菜单的技巧,需要的朋友可以参考下
给propertyGrid动态添加属性,估计有人想用。
easyUI页面datagrid动态列和form字段动态添加;项目开发时用到的,废了不少事,大概总了一下,现在发出来共享给想我一样的要用到的菜鸟们,谢谢
spring 重新动态加载数据库或xml中的bean,可以不用重启tomcat
相关文章:Unity3D中的Texture2D纹理失真解决办法//动态加载图片IEnumerator loadImage(){WWW www = new WWW
java swing 多选下拉框 支持动态加载数据 (优化了网上的下拉框代码)
动态加载树动态加载树动态加载树动态加载树动态加载树动态加载树动态加载树动态加载树动态加载树动态加载树动态加载树
dev express radiogroup 动态添加item示例,此控件的Item没有提供设置可见性的visiable的属性,只能通过添加和删除item的方式来实现
动态加载dll(反射),动态加载webservice
JQUERY+jSON动态加载树
ScrollView动态加载资源节省动态更新!
本文档把js加载做成vue组件,便于在其他模块引用,符合vue整体思路,供大家参考借鉴