面向对象三大特征:封装、继承、多态。这里就说一下封装,继承和多态后面会详细介绍。
封装
其实封装思想并不只存在于我们的编程中,在日常生活中,我们习以为常的很多事物都体现着封装思想。例如:
- 我们买的蛋糕要放在盒子里从烘焙店带回家。
- 我们操控电脑不是将电脑拆开去直接控制里面的cpu、主板。
- 我们不知道电脑的生产步骤不影响我们使用电脑。
以上都是封装思想在生活中的提现,在编程中,封装也存在以下优点:
- 保护代码内部
- 方便代码调用
- 降低代码耦合度
- 提高代码复用率
接下来看一下封装思想在代码中的提现。
方法
方法,又称函数,是代码的集合。
方法的使用主要分为方法的定义和方法的调用。一个定义好的方法在调用之前是不会执行的。
方法的定义
方法的定义又称为封装的方法
语法:
访问权限修饰符 修饰符 返回值类型 方法名(形参列表){
方法体
return 返回值;
}
- 访问权限修饰符:后面详细介绍,目前先使用public。
- 修饰符:后面详细介绍,目前先使用static。
- 返回值类型:返回值的数据类型,如果没有返回值或返回值为null,则返回值类型使用void。
- 方法名,自定义,一般遵守小驼峰命名规范,并要做到见名知意。
- 形参列表,相当于声明一些变量,如果有多个变量,变量中间用逗号( , )隔开。()
- 方法体,这个方法中要执行的java代码。
- 返回值,方法执行结束之后要返回的数据。
例如:
public static void test(){
System.out.println("test")
}
定义了一个名为test的方法,这个方法没有形参,没有返回值。
public static void test2(int num){
System.out.println(num);
}
定义了一个名为test2的方法,调用该方法需要给这个方法传值
public static boolean test3(){
System.out.println("test3")
return true;
}
定义了一个名为test3的方法,方法执行结束后会返回true。
方法的调用
方法在定义好之后并没有被执行,只要在调用之后才会执行。
语法:
方法名(实参列表);
数据类型 变量名 = 方法名(实参列表);
- 方法名:要调用的方法的方法名。
- 数据类型:与返回值的数据类型一致
- 变量名:用于接收方法执行结束之后的返回值,如果没有返回值,不能接收。如果有返回值,可以选择接收,也可以选择不接收。
- 实参列表:调用方法需要传入的参数,需要与方法的形参列表 数据类型相同 数量相同 顺序相同。
方法的重载关系
方法的重载关系,就是在同一个类中,方法名相同,形参列表不同的两个方法。
例如:
public class Funciton {
public static void main(String[] args) {
print();
print("有参");
}
public static void print() {
System.out.println("无参方法");
}
public static void print(String str) {
System.out.println(str);
}
}
由于我们两个方法的方法名虽然相同,但是由于我们在调用方法时传入的参数不同,所以计算机可以知道我们要调用的是哪个方法。
方法的重复调用
其实方法的重复调用很简单,就是方法中调用方法,如:
public class Funciton {
public static void main(String[] args) {
}
public static void A(){
B();
}
public static void B(){
C();
}
public static void C(){
}
}
递归
递归其实就是特殊的调用,在某个方法中调用它自己。例如:
public class Funciton {
public static void main(String[] args) {
}
public static void A(){
A();
}
}
或者采用间接的方式调用方式形成递归:
public class Funciton {
public static void main(String[] args) {
}
public static void A(){
B();
}
public static void B(){
C();
}
public static void C(){
A();
}
}
递归很容易形成死循环,所以我们在实际开发中应当尽量避免这种情况,特殊情况除外,如:遍历目录及其子目录和文件。