0 工具

在分析面向对象时最好采用UML图进行分析设计

1 Java面向对象的特点

java采用面向对象的方法设计程序主要体现在:对象有属性和方法,事件的发生是对象间的信息交互产生的即程序中的get set方法这是与面向过程最大的不同点

2 多态

多态的目的是为了提高代码的复用性如工厂模式案例中为了减少if else采用向上转型,而向上转型中为了弥补其不足之处提出了向下转型。实现多态的前提就是继承和实现,继承主要是针对类、实现则是针对接口而言的。接口是一个比抽象类更为抽象的类一般说是一种规范,但其本质仍然是类,可以通过接口实现类似C++中的多重继承,因为Java中类的继承是单一的即只能有一个父类。

3 反射

Java中的反射机制是动态获取类型信息,在JVM中进行获取主要有4个对象:Class、Constructor、Field、Method,利用这四个对象来获取类中的信息。

由上图可知,java文件会被编译成字节码文件Person.class,JVM中利用ClassLoder类中的四个对象分别获取类型信息、构造方法、属性、方法信息。Class对象是所有工作的前提,要先根据字节码文件获得对象才能获取对象中的属性和方法。对Class有正反两个应用:对过对象获得字节码文件、通过字节码文件获得对象。

4 反射、多态、接口综合案例

在博客设计模式里的工厂模式中有一段代码:

public class SimpleFactory {
public static Plant createPlant(String name) throws Exception {
return (Plant)Class.forName(name).newInstance();
}
}

此处的返回语句就是综合运用了三个知识点,利用反射通过类名获取类对象并实例化,然后向上转型。此处Plant是一个接口,要想实现多态中的向上转型必须先继承类或实现接口,因此每一个对象都实现了Plan接口。

0

最新文章

  1. 【Win 10应用开发】响应系统回退键的导航事件
  2. Python 安装Twisted 提示python version 2.7 required,which was not found in the registry
  3. C#操作XML文件
  4. Java继承和多态实例
  5. 以多个实例方式打开Notepad++
  6. HDU 1176 免费馅饼(记忆化搜索)
  7. jnlp jws
  8. 《MORE EFFECTIVE C++》条款20 条款21
  9. [ CodeVS冲杯之路 ] P1368
  10. jdk7和8的一些新特性介绍
  11. Android架构分析之LOG模块
  12. C++/C常量
  13. DirectFB的架构介绍
  14. 虚函数表:QT5与VS2015的差异
  15. python学习日记(生成器函数进阶)
  16. 高性能场景下,HashMap的优化使用建议
  17. <Numerical Analysis>(by Timothy Sauer) Notes
  18. cocos2dx 3.x(for 循环让精灵从中间往上下两边排列)
  19. 【impala学习之二】impala 使用
  20. 虚拟现实外包公司—北京动点飞扬软件承接VR/AR软件、游戏外包

热门文章

  1. 【模板】C++高精度加法
  2. selenium弹框元素定位-冻结界面
  3. python flask 如何读取数据库数据并返回到html
  4. VIM纵向编辑【转】
  5. hdu 1068 最大子序列和变形,,,
  6. springMVC接受json类型数据
  7. Unity上线google商店 用IL2Cpp打包64位版本和Android APP Bundle优化 及产生的bug
  8. 获取windows进程信息及CListCtrl控件(List Control)练习
  9. element-ui 中 el-table 相关操作
  10. 【ASE高级软件工程】第一次结对作业