对象的引用及传递
2016-04-24 10:51
288 查看
引用类型的传递:基本数据类型是进行值传递,引用数据类型则是地址进行引用传递。
所谓引用传递,指的是一块堆内存空间,同时被多个栈内存所指向,引用传递的核心认识,不同的栈内存指向了同一块堆内存之中,所做的修改影响所有的栈内存。
*
*对象克隆,clone()实现克隆必须实现Cloneable接口,是标示接口,指一种能力的体现。
*对象的克隆实际上就是建立一个内存空间将原有对象中的信息复制过来。
*
*java的反射机制:在运行状态中,对于任意一个类都能够知道这个类的所有方法和属性。
* 对于任意一个对象,都能够调用它的任意一个方法,这种动态获取信息以及动态调用对象的方法的功能。
*功能:在运行时判断任意一个对象所属的类,在运行时构造任意一个类的对象,判断一个类所具有的成员变量和方法,调用任意一个对象的方法。
*getClass()方法返回对象类型为class
例:
所谓引用传递,指的是一块堆内存空间,同时被多个栈内存所指向,引用传递的核心认识,不同的栈内存指向了同一块堆内存之中,所做的修改影响所有的栈内存。
*
*对象克隆,clone()实现克隆必须实现Cloneable接口,是标示接口,指一种能力的体现。
*对象的克隆实际上就是建立一个内存空间将原有对象中的信息复制过来。
*
*java的反射机制:在运行状态中,对于任意一个类都能够知道这个类的所有方法和属性。
* 对于任意一个对象,都能够调用它的任意一个方法,这种动态获取信息以及动态调用对象的方法的功能。
*功能:在运行时判断任意一个对象所属的类,在运行时构造任意一个类的对象,判断一个类所具有的成员变量和方法,调用任意一个对象的方法。
*getClass()方法返回对象类型为class
例:
/*传统工厂模式 * interface Book{ public String getTitle(); } class MathBook implements Book{ public String getTitle(){ return "数学类图书"; } } class Factory{ public static Book getInstance(String className){ if("mathBook".equals(className)){ return new MathBook(); } return null; } } public class TestFactory { public static void main(String[] args) { // TODO Auto-generated method stub Book book = Factory.getInstance("mathBook"); //Book book = Factory.getInstance(" "); System.out.println(book.getTitle()); } } */ interface Book{ public String getTitle(); } class ComputerBook implements Book{ public String getTitle(){ return "计算机图书"; } } class MathBook implements Book{ public String getTitle(){ return "数学类图书"; } } class Factory{ public static Book getInstance(String className){ Book book =null; try{ book = (Book)Class.forName(className).newInstance(); }catch(Exception e){ e.printStackTrace(); } return book; } } public class TestFactory{ public static void main(String args[])throws Exception{ Book book = Factory.getInstance("ComputerBook"); System.out.println(book.getTitle()); } }
相关文章推荐
- 启动图片
- QML视图元素  Visual Elements In QML Qt 5.6.0 Reference Documentation
- Java枚举
- Matlab SVM
- 第八周进度条
- C#利用POST实现杭电oj的AC自动机器人,AC率高达50%~~
- 加速Android Studio/Gradle构建
- JVM基础(三) JVM内存管理
- 帧率、码流与分辨率相关知识
- Quartus II 中调用ModelSim-Altera 报错问题
- [后端人员耍前端系列]KnockoutJs篇:使用WebApi+Bootstrap+KnockoutJs打造单页面程序
- 爬取博客数据
- 深入理解JVM(六)——JVM性能调优实战
- 关于java的正则表达式的用法
- 查询Oracle中某张指定表的列的信息
- Windows Xp下快速启动栏中显示桌面被误删除后的恢复
- 深入理解JVM(六)——JVM性能调优实战
- 结尾
- matlab通过两点画线问题&&plot,line的用法和区别。
- nodejs在windows下的安装配置(使用NVM的方式)