面向对象设计

一、面向对象简记

  1)面向对象设计,每个类的职责应该单一,不要在一个类中引入过多的接口。
  2)面向对象的系统设计应该遵循开闭原则,系统应该稳定不可修改,但应支持通过继承、组合等方式进行扩展。
  3)过程式语言和面向对象的语言各有其优势,过程式语言更加灵活,面向对象语言更加强调抽象和封装。
  4)面向对象开发中,引用传递意味着传递的并不是实际的对象,而是对象的引用,因此,外部对引用对象所做的改变会直接反映到所引用的对象上
  5)创建一个新的实例对象时,它会得到一块新的内存空间,也就是说同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间(类中的静态成员变量是所有对象共有的,也就是在一片属于类的存储空间中,被所有的对象共有。)

二、java和C++的区别:

  1.Java是解释型语言,C++是编译型语言。
  2. C++比Java执行速度快,但是Java可以利用JVM跨平台。
  3.Java是纯面向对象的语言,所有代码(包括函数、变量)都必须在类中定义。而C++中还有面向过程的东西,比如是全局变量和全局函数。(java没有全局变量的说法,只有static静态说法)
  4. C++中有指针,Java中没有,但是java有引用。
  5. C++支持多继承,Java中类都是单继承的。同时Java中的接口是多继承,类对接口的实现也是多实现。
  6.C++中,开发需要自己去管理内存(即是要显示的关心内存释放),但是Java中JVM有自己的GC机制(不用显示的关心内存释放),虽然有自己的GC机制,但是也会出现OOM(out of memory )和内存泄漏的问题。C++中有析构函数,而Java中Object有finalize方法
  7. C++运算符可以重载,但是Java中不可以。同时C++中支持强制自动转型,Java中不行,会出现ClassCastException(类型不匹配)。

三、动态类型语言和静态类型语言

  1)动态类型语言:类型的检查是在运行时做的:使用变量前不需要声明变量。如:JavaScript、Ruby、Python。

  2)静态类型语言:类型判断是在运行前做的(如编译阶段):使用变量前需要声明变量。如:C、C++、Java

四、java:强类型语言

  1)java是强类型语言,所有的方法必须放在类里面,包括main
  2)java中可以有多个重载的main方法,只有public static void main(String[] args){}是函数入口(唯一)
  3) JAVA程序中public修饰的类名必须与文件名一样(内部类的类名一般与文件名不同)

原文地址:https://www.cnblogs.com/yangrongkuan/p/12023733.html