一、编程思想的设计模式
面向过程是一种以功能实现为核心的编程方式。它强调的是解决问题的具体步骤,通过分析问题的流程,将每一步操作封装成函数,然后按顺序调用这些函数来完成任务。这种编程方式关注的重点在于“怎么做”,即功能的逐步执行过程。
而面向对象则是以现实世界中的事物为模型进行程序设计的思想。它不再专注于过程本身,而是思考完成某项任务需要哪些对象参与,每个对象应具备什么属性和行为。通过对象之间的协作来达成目标。
面向对象可以看作是面向过程的进阶形式。它将对象作为基本的构建单元,更贴近人类对现实世界的认知逻辑,使得系统结构更加清晰,代码易于维护与扩展,特别适用于大型项目的开发。不过,在运行效率方面,通常会比面向过程略低一些。
---- 关注点从功能实现转向了参与者(类)的设计
二、类与对象的基本概念
1、类
- 类是对具有相同特征和行为的一类事物的抽象描述。
- 本质上,类是一种自定义的数据类型,内部包含属性(成员变量)和方法(成员函数)。
- 定义类之后,可以用它来创建多个实例,也就是对象。
- 类中的属性也称为实例变量或成员变量;类中的方法也称为实例方法或成员方法。
- 类的作用是描述对象的结构:有哪些属性、能执行哪些操作。
- 类的定义格式如下所示:
public class 类名{
// 类体
// 属性(成员变量)--静态的描述 --多个
[修饰符] 数据类型 变量名 [=值];
// 行为(成员方法) --动态的描述 --多个
public void 方法名(){
方法体;
}
}
2、对象
如果把类比作一种数据类型,那么对象就是该类型的具体变量。类就像一个模板,可以通过它创建出多个结构一致的对象实例。每一个对象都拥有与其所属类相同的属性和方法。
我们可以通过“对象名.属性名”的方式访问并修改对象的属性值,也可以通过“对象名.方法名”来调用其对应的方法。
三、属性与方法详解
1、属性
类中定义属性的语法结构如下:
[修饰符] 数据类型 属性名 = [初始化值];
方括号 [ ] 中的内容是可以省略的部分。
- 常见的权限修饰符包括:private、缺省(默认)、protected、public。
- 属性是类中用于静态描述对象状态的成员变量,也可称为全局变量。其数据类型可以是任意类型,包括基本数据类型、数组类型或对象类型。
- 成员变量随着对象的创建而被分配在堆内存中,并随对象的存在而存在。
- 若未显式赋值,类中的属性会根据其类型获得相应的默认初始值:
| 数据类型 | 默认值 |
|---|---|
| 整数类型(byte, short, int, long) | 0 |
| 浮点数类型(float, double) | 0.0 |
| 字符类型(char) | 空格 |
| 布尔类型(boolean) | false |
| 字符串类型(String)及其他引用类型 | null |
- 在类中定义的属性属于全局变量,作用范围覆盖整个类及其所有方法;而在方法内部定义的参数或变量则为局部变量,仅限于该方法内使用。
2、方法
2.1 方法的概念
- 方法是将某一特定功能封装在类中的代码块,用于实现具体的操作。
- 它是对类或对象行为特征的抽象,目的是实现功能复用,提升代码的可读性和可维护性。
- 在Java中,方法不能脱离类独立存在,必须定义在类的内部。
- 方法的基本语法格式如下:
修饰符 返回值类型 方法名(参数类型 形参1, 参数类型 形参2, …) {
方法体程序代码...
return 返回值;
}
2.2 返回值类型说明
- 若方法不返回任何值,则需使用 void 声明返回类型。此类方法中一般无需 return 语句;若使用,只能写成“return;”,表示结束当前方法。
- 若方法有返回值,则必须在声明时指定返回值的具体类型,并在方法体内使用“return 数据;”语句返回对应类型的值,且返回值类型必须与 return 的表达式一致。
- 当无法确定具体返回类型时,可暂时使用 Object 类型(因其为 Java 所有类的根父类),但通常不推荐这样做。
- 方法参数若有多个,应用逗号 ‘,’ 分隔开。
四、对象在内存中的存储机制
- 堆内存:用于存放由 new 创建的对象、数组以及对象的实例变量(即属性的实际内容)。堆空间需要通过 new 关键字动态分配。
- 栈内存:主要存储基本数据类型的变量、局部变量以及对象的引用。需要注意的是,对象本身并不存放在栈中,栈中保存的只是指向堆内存地址的引用变量。
- null 值的意义:null 并不是一个有效的对象实例,也不占用对象内存空间。它只是一个特殊的值,表示引用未指向任何对象。因此,null 可以赋给引用类型变量,但不能赋给基本数据类型。
- 引用传递的本质:同一块堆内存可以被多个栈中的引用同时指向,不同引用可通过同一地址修改共享的堆内存内容。
- 垃圾内存:指程序中已经没有任何引用指向的堆内存空间。这部分空间被称为“垃圾”,将由 JVM 的垃圾收集器(GC)在适当时机自动回收,释放内存资源。
五、类中的数组应用
在类中可以定义数组类型的属性,既可以是一维数组也可以是多维数组。数组本身作为引用类型,其实例存储在堆中,而类中的字段保存的是对该数组的引用。通过这种方式,可以在对象中管理一组相关数据,增强类的数据表达能力。
类属于引用数据类型,是数据类型中的一种。通过定义一个类,我们可以创建多个对象实例。例如:
Person p1 = new Person();
Person p2 = new Person();
接着可以使用该类来声明一个数组,用于存储这些对象。当需要访问某个对象的属性或调用其方法时,可以通过“数组[下标].属性名”或“数组[下标].方法名”的方式实现,并结合循环结构批量处理对象数据。
Person[ ] p = new Person(){p1,p2};
六、类·构造器
1、基本概念
在Java中,语句“类名称 对象名称 = new 类名称();”实际上会触发构造函数的调用。其中,关键字 new 被称为对象创建运算符,主要作用是为对象分配内存空间,并将内存初始化为默认值。在完成内存分配与初始化后,new 会进一步调用相应的构造函数,以完成对象的初始化过程。
构造函数,也称构造器或构造方法,通常位于类的属性和普通方法之间,其基本格式如下所示:
public class Person {
String name;
int age;
public Person(){
}
public Person(String name,int age){
this.name = name;
this.age = age;
}
2、构造函数的主要特征
- 构造函数的名称必须与所属类的名称完全一致。
- 构造函数没有返回值类型,这一点不同于使用
void声明的方法。 - 构造函数并非必须显式编写,若未定义,系统将自动提供一个无参的默认构造函数。
- 如果类中没有手动定义任何构造器,编译器会在编译期间自动添加一个无参数的构造函数,以便支持对象的创建。
- 一旦类中定义了至少一个构造函数(无论是否有参数),系统将不再自动提供无参构造函数,此时如需无参构造,必须手动声明。
3、构造函数的核心功能
构造函数主要用于对象的创建及初始化操作。其中,有参构造函数的作用是在创建对象的同时,对对象的成员属性进行赋值初始化。这种方式能够有效减少后续单独设置属性的代码量,提升编码效率。
例如,在创建对象时直接通过有参构造器完成属性赋值,可以简化代码流程。参考如下示例:
Person p = new Person("王五",23);

雷达卡


京公网安备 11010802022788号







