答:C++和JAVA都是面向对象语言,基于面向对象的思想,可重用性高。
JAVA | C++ |
解释性语言所有代码都会翻译成统一的、与系统无关的bytecode,然后放到JVM上运行 | 编译型语言代码要先通过编译器转换成与系统相关的中间代码,然后才能运行 |
定义一种公用静态的变量完成定义全局变量的功能 | 可定义全局变量和全局函数 |
(接口) | 支持多重继承 |
自动回收(GC) | 程序员申请和释放内存 |
Java不支持系统调用,无法与操作系统进行交互。这也是为何Java中只有线程(Thread)概念而没有进程(PRocess)概念。 | 可以调用系统中的指令,如dos命令 |
提供对注释文档的内建支持 | no |
有很多标准库 | 一般厂家提供库 |
no | 支持运算符重载 |
no | 支持预处理 |
必须显示的强转 | 自动强制类型转换 |
没有指针的概念 | 支持指针 |
不包含结构和联合,所有内容都封装在类里面 | 结构和联合的所有成员均为公用,带来了安全性问题 |
纯面向对象语言,所有的代码必须在类中实现 | 兼具面向对象和面向过程 |
可以看到,两者之间既有相似之处,也有不同的地方。对于单继承的实现本质上是一样的,但也有细微的差别(如方法表);差别最大的是对于多重继承(多重接口)的支持。实际上,由于 C++ 是静态编译型语言,在编译时就可以确定要调用的方法在方法表的位置,没有JVM搜索常量池的过程。它无法像 Java 那样,在运行时刻动态的“查找”所要调用的方法。
对于普通的工厂模式当我们在添加一个子类的时候,就需要对应的修改工厂类。 当我们添加很多的子类的时候,会很麻烦。
* Java 工厂模式可以参考
* http://baike.xsoftlab.net/view/java-factory-pattern
*
* 现在我们利用反射机制实现工厂模式,可以在不修改工厂类的情况下添加任意多个子类。
*
* 但是有一点仍然很麻烦,就是需要知道完整的包名和类名,这里可以使用properties配置文件来完成。
*
* java 读取 properties 配置文件 的方法可以参考
* http://baike.xsoftlab.net/view/java-read-the-properties-configuration-file
4、方法:反射机制是如何获得class类的?
1)class.forName("类的路径")
2)类名.class
3)实例.getClass()
第一次握手:建立连接时,客户端发送SYN包到服务器,进入SYN_SEND状态,等待服务器确认。第二次握手:服务器收到SYN包,确认客户的SYN(ack=j+1),自己也发送一个SYN包(syn=k),进入SYN_RECV状态。第三次握手:客户端收到ack+syn包,向服务器发送确认包(ack=k+1),发完之后,客户端和服务器都进入establelished状态,完成3次握手。
四次挥手:A:“我已无话可说(FIN=1),分手吧!” B:“你不爱我了(ACK=1)” B:“我还不稀罕你嘞!(FIN=1)” A:“拜拜就拜拜,下一个更乖。(ACK=1)”1 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求2 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置13 由B 端再提出反方向的关闭请求,将FIN置14 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.新闻热点
疑难解答