面向过程(procedure oriented programming缩写POP)所注重的是处理一件事情的过程,采用面向过程的思想做一件事往往先分析出完成这件事情的所有步骤,再一步步进行实现。
2.面向对象 面向对象(object oriented programming 缩写 OOP)思想的核心在于对于整件事情的相互关系进行分类,再根据不同的分类分别进行更加细致的处理。
3.示例 相信大家都知道冰箱装大象的故事,那么按照面向过程的思想,完成这件事需要三步:1.打开冰箱门;2.装入大象;3.关上冰箱门。完成这件事只需要按照步骤操作即可。
那么如果采用面向对象的思想,首先需要进行分类:1.冰箱的类;2.大象的类。在这里对于冰箱的类,需要完成打开冰箱门以及关上冰箱门,对于大象的类需要完成装入大象。完成这件事先需要完成冰箱类的打开冰箱门操作,再完成大象类的装入大象操作,最后完成冰箱类的关上冰箱门的操作。
4.面向对象与面向过程 面向对象无法取代面向过程,他们是相辅相成的。面向对象关注于从宏观上把握事物之间的关系,在具体到如何实现某个细节时,仍然采用面向过程的思维方式。面向对象如果离开了面向过程,就无法实现真正的落地,成为无源之水。
二、Java类 通俗的讲Java类是一个模板,是一类事物的属性特征与行为的集合,是宏观上一类相似事物的相同特征与行为的抽象。举个简单的例子——汽车类,那么这样的一个类中的属性就会有汽车的颜色 ,汽车的品牌等,行为包含汽车行驶,汽车减速等。通过这样的一个模板可以创造出无数个对象,宏观世界中的每一辆汽车都是该类的对象。
1.类的声明 在Java语法中对一个类的声明有着具体的格式:
// Car为类名,类名首字母大写。一个类中可以包含如下内容:成员变量(属性)、方法、构造方法、内部类、代码块
[访问权限修饰符] [修饰符] class Car{
String name; // 一个String型的描述品牌名称的属性(成员变量)
// 汽车启动的方法
public void start(){
}
}
// 在定义属性以及使用方法时通过创建出来的对象去调用 Car car = new Car(); // 详细内容见第三节:对象与引用 car.name = "宝马"; car.start();2.变量的分类
按照数据类型划分的话可以分为基本数据类型以及引用类型,引用类型即为类的对象,不做阐述。这里主要区分一下按照变量的位置划分可以分为成员变量与局部变量。
成员变量直接包含于类中,可以进行自定义的初始化赋值,如果没有初始化赋值Java会自动为其赋默认值。
局部变量包含于类的方法或者代码块中,局部变量必须显式的初始化赋值(自定义赋值),当方法结束后会进行自动的销毁。
3.变量的生命周期 ①成员变量:创建对象时→对象回收后(Java自动的垃圾回收机制)
②局部变量:方法调用时→方法结束后
4.方法的分类 类中的方法可以分为两类:
①成员方法
成员方法直接被定义在类中。当需要调用某一方法时,首先创建一个包含该方法的类的对象,用该对象去调用方法。
// 方法的基本格式
// 返回值类型需要严格控制,当方法没有返回值时,即没有return语句,则方法名前的返回值类型写为 void
[访问权限修饰符 修饰符] 返回值类型 方法名(变量类型 变量名,变量类型 变量名,···){
方法体;
[return 返回值];
}
②构造方法
构造方法是用来初始化被创建出来的对象的方法。
// 默认的构造方法
public Car(){
}
构造方法的方法名与类名一致,没有返回值且不需要void修饰。
在一个类中至少会有一个Java自动创建的默认构造方法,并且每次创建对象时至少调用一个构造方法。
一个类中可以拥有多个构造方法(原因在于创建对象时可能会固定一些特殊的属性值),只在参数上进行区分调用时也通过参数进行区分。此类现象成为方法的重载。
5.方法的重载 在同一个类中,有多个方法名相同的方法的现象称为方法的重载,这些方法仅通过参数(个数、数据类型、顺序)进行区分,与返回值类型无关。构造方法与普通方法皆可重载。
三、对象与引用// 使用自定义的类创建一个对象,声明变量来引用(指向)对象 Car a = new Car(); // 调用默认无参的构造方法创造一个对象,并使a指向该对象 Car b = new Car(name,color); // 调用定义的有参构造方法创建一个对象,并使b指向该对象1.创建流程
.class文件通过类加载调用构造方法在堆空间中创建对象,方法栈中的main函数声明变量指向所创建的对象,用该变量去进行对象属性的赋值以及方法的调用。
形参拿到实参的值赋给自身,操作不会影响实参的值。
int a = 1; int b = a;②引用传递
创建的引用类型的变量被传给方法时,实际传的是该变量指向的对象的地址,方法中的操作会改变该地址内的内容。
四、static关键字 static关键字称为“静态”可以修饰成员变量、方法、代码块以及内部类。
1.修饰变量 static所修饰的变量称为静态变量,它有如下几点特质:
①随类的加载而加载(在创建对象之前)。
②该静态变量只有一份,被所有对象所共享,因此不可以改变,故一些值固定的成员变量用static修饰。
③优于对象存在。
④可以不创建对象,直接被类调用。
2.修饰方法 被static所修饰的方法不仅可以被对象调用,也可以直接使用类名(建议)进行调用。并且静态的方法只可以调用静态变量(因为静态方法优于对象的创建,成员变量尚未创建)。非静态的方法也可以调用静态变量。
五、代码块 代码块指的是 { } 中所包含的内容,类似一个没有名称的方法体,代码块同样可以分为实例块以及静态块:
1.实例块 每次创建对象时调用。
2.静态块 在类加载时仅被调用一次,类加载指的是第一次创建对象时加载类,以及调用静态变量或静态方法时加载类。
六、类加载顺序 类加载(完成静态部分的加载)→创建对象(完成实例块的加载)→调用构造方法。
七、包包在我们电脑上的具体体现就是一层又一层的文件夹,用以避免类重名,并且可以按照不同的功能管理以及控制访问权限。1.命名规范
通常情况下包的层级按照该规则划分:项目类型.公司名称.项目名称.项目模块名称。
2.导入外部的包中的类 导入外部包中的类的时候使用import关键字,后接完整的类的路径。
八、访问权限修饰符 在java中有四个访问权限修饰符,分别为:public、protected、(default)、private。其中(default)代表不添加任何访问权限修饰符。



