1.面向过程和面向对象有什么区别?
从语言方法出发:
对于C语言来说,是完全面向过程的。
对于C++语言来说,是一半面向过程,一半面向对象。(即半面向对象)
对于Java语言来说,是完全面向对象的。
2.什么是面向过程的开发方式?
- 注重步骤,注重的是实现这个功能的步骤。
第一步干什么
第二步干什么
……
- 另外面向过程也注重实现功能的因果关系。
因为A所以B
因为B所以C
因为C所以D
……
3.面向过程的缺点与优点
缺点: 面向过程最主要的是每一步与每一步的因果关系,其中A步骤因果关系到B步骤,A和B联合起来形成一个子模块,子模块和子模块之间又因为因果关系结合在一起。假设其中任何一个因果关系出现问题(错误),此时整个系统的运转都会出现问题。(代码与代码之间的耦合度太高,扩展力太差)
优点: 对于小型项目(功能),采用面向过程的方式进行开发,效率较高。不需要前期进行对象的提取、模型的建立,采用面向过程方式可以直接开始干活,一上来就直接写代码,编写因果关系,从而实现功能。(快速开发)
4.什么是面向对象的开发方式?
采用面向对象的方式进行开发,更符合人类的思维方式。面向对象就是将现实世界分割成不同的单元,每一单元都实现成对象,然后给一个环境驱动它们,让各个对象之间协作起来形成一个系统。
采用面向对象的方式进行开发耦合度低,扩展力强。
5.OOA、OOD、OOP
使用面向对象编程思想开发系统,在现代开发中会将面向对象贯穿整个过程,一般包括:
1)OOA:面向对象分析
2)OOD:面向对象设计
3)OOP:面向对象编程
6.面向对象三大特征:封装、继承、多态。
7.类与对象
类:一个抽象的概念。(属性+方法)
对象:实际存在的个体。对象也叫做实例。
在java中,要想得到“对象”,必须先定义“类”,“对象”是通过“类”这个模板创造出来的。
8.实例化与抽象
实例化:通过类这个模板创建对象的过程,叫做实例化。
抽象:多个对象具有共同特征,进行思考总结抽取共同特征的过程,叫做抽象。
9.类——【实例化】——>对象(实例)
对象——【抽象】——>类
10.类=成员变量+方法
对于成员变量来说,没有手动赋值时,系统默认赋值。
11.对象的创建
new 类名();
如:XueSheng s1 = new XueSheng();
这里的s1是变量名,是对对象的一个引用,存放的是对象的地址(s1不能叫做对象,只是一个变量名字);XueSheng是变量s1的数据类型(引用数据类型);new XueSheng()是一个对象(学生类创建出来的学生对象)。
注意:凡是通过new运算符创建的对象,都存储在堆内存中,new运算符的作用就是在堆内存中开辟一块空间。堆内存中存储对象以及对象的实例变量。
12.什么是实例变量?
对象又被称为实例。实例变量实际上就是对象级别的变量。如 public class star{ double height; }中的height属性所有star对象都有,但是每一个对象都有自己的height值,假设创建10个star对象,height变量应该有10份,所以这种变量被称为对象级别的变量,属于实例变量。不能通过类名来直接访问实例变量。
怎么访问实例变量?语法:引用.实例变量名,如:s1.name;
13.空指针异常
出现空引用异常的前提条件是?空引用访问实例(对象)相关的数据时,都会出现空指针异常。
当一个对象没有任何引用指向的时候,会被java中的垃圾回收器GC回收。java中的垃圾回收器GC主要针对回收的是堆内存中的垃圾数据。
14.方法调用参数传递问题
java中规定:参数传递的时候和类型无关,不管是基本数据类型还是引用数据类型,传递参数的时候都是统一将值复制一份传递下去。
15.构造方法
1)什么是构造方法,有什么用?
构造方法是一个比较特殊的方法,通过构造方法可以完成对象的创建以及实例变量的初始化。换句话说,构造方法是用来创建对象,并且同时给对象的属性赋值。
注意:实例变量没有手动赋值的时候,系统会赋默认值。
2)当一个类没有提供任何构造方法时,系统会默认提供一个无参数的构造方法。这个构造方法被称为缺省构造器。
3)构造方法的语法结构
[修饰符列表] 构造方法名(形式参数列表){
构造方法体;
}
注意:
第一,修饰符列表统一写public;
第二,构造方法名和类必须一致;
第三,构造方法不需要指定返回值类型,也不能写void。
4)怎么调用构造方法?使用new运算符来调用构造方法。语法:
new 构造方法名(实际参数列表);
5)注意:
a.当一个类中没有提供任何构造方法时,系统默认提供一个无参数的构造方法,这个无参数的构造方法叫做缺省构造器。
b.当一个类中手动创建了构造方法,那么系统将不再提供默认缺省构造器。
c.无参数构造方法和有参数构造方法都可以调用,可以同时存在。这是因为构造方法支持方法重载。