一. 面向过程和面向对象
1. 二者区别是什么
- 面向过程就是,分析出解决问题所需要的步骤,然后用函数把这些步骤一个一个实现,使用的时候一个一个依次调用就可以了
- 面向对象就是,把构成问题的事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在解决问题的步骤中的行为
- 面向对象是以功能来划分问题的,而不是步骤
2. 二者优缺点分别是什么
- 面向过程:
(1) 优点:性能比面向对象要高,因为类调用时需要实例化,开销比较大,比较消耗资源。比如Linux/Unix都是采用面向对象开发的,性能就是最主要的原因
(2) 缺点:没有面向对象易维护、易扩展、易复用 - 面向对象:
(1) 优点:易维护、易扩展、易复用。由于面向对象有继承、封装、多态的特性,可以设计出低耦合的系统,使系统更加灵活且易于维护
(2) 缺点:性能要低于面向过程
二. 面向对象的特性
1. 封装
封装是指,将客观事物抽象成类,每个类对自身的数据和方法实行保护。类可以把自己的数据和方法只让可信的类或对象操作,对不可信的进行信息隐藏
2. 继承
新类继承了原始类的特性,新类既可以从它的基类那里继承方法和实例变量,也可以修改或增加新方法使之更适合特殊的需要
3. 多态
多态是指,允许将子类型的实例赋值给父类。多态的作用就是为了实现代码重用。
实现多态有两种方式:重载和覆盖
三. Java语言的优点
- Java是面向对象的语言
- 平台无关性。Java可以“一次编译、到处运行”,因为Java是解释型语言,编译器会把Java代码变成“中间代码”,然后再Java虚拟机(JVM)上结束执行。由于中间代码与平台无关,所以Java可以很好的跨平台执行,具有很好的可移植性。
- Java提供了很多内置的类库
(1) java.lang: Java中的基本类库,如String、Boolean、System、Math、Exception、Thread等,该类库是不需要导入的,其他类库需要导入
(2) java.util: 提供使用方法及数据结构,如Arrays、Collection、HashTable、Data等
(3) java.io: 通过数据流、文件系统实现对想序列的系统输入输出,如File、FileInputStream、IOException等
(4) java.sql: 用于访问及处理数据库数据的类
(5) java.math: 简明的整数算术及十进制算数的基本函数
四. Java和C++之间的区别
两者都是面向对象语言,都具有继承、封装、多态的特性。它们的区别如下:
- Java是解释型语言,代码经过Java编译器编译成字节码,再由JVM解释执行。C++为编译型语言,代码经过编译和链接后生成可执行的二进制代码。因此Java的执行速度比C++慢,但Java可以跨平台执行
- Java中没有指针的概念,从而使程序更加安全
- Java不支持多重继承,但可以可以实现多个接口。C++是允许多重继承的
- C++需要开发人员去管理内存的分配,而Java提供了垃圾回收器来实现垃圾的自动回收,不需要程序显示地管理内存的分配
- Java不支持自动强制类型转换,必须由开发人员进行显示地强制类型转换。而C++支持自动强制类型的转换,但这会导致程序的不安全