大家好!我是 EnigmaCoder。
- 本文介绍java面向对象编程的基本概念,主要包含面向对象与面向过程的区别、面向对象编程的三大特性、类与对象等。
过程
”(即算法或操作步骤)为核心组织代码,将复杂的问题拆分成一系列线性的、顺序执行的步骤(函数),通过函数调用和数据传递完成任务。程序=数据结构+算法
。做什么
”,通过“第一步做什么、第二步做什么
”来一步一步解决问题。数据作为函数的输入与输出处于被动的被处理地位。对象
”为核心组织代码,将数据(属性)和操作数据的方法(行为)封装成一个独立的单元(类),通过对象之间的交互(调用方法)解决问题。程序=多个对象+对象间的消息传递
。谁来做
”,将问题抽象为多个具有明确职责的对象,每个对象自主管理自身数据,并通过公开接口与其他对象协作。维度 | 面向过程(POP) | 面向对象(OOP) |
---|---|---|
核心 | 以「步骤/流程」为中心(关注“如何做”)。 | 以「实体(对象)」为中心(关注“谁来做”)。 |
代码单元 | 函数(数据与逻辑分离)。 | 类/对象(数据与逻辑封装在一起)。 |
组织方式 | 线性流程,函数按顺序调用。 | 模块化协作,对象通过接口交互。 |
复用性 | 低(仅函数复用,需手动传递数据)。 | 高(通过继承/组合复用类的属性和行为)。 |
维护成本 | 高(修改易影响多处逻辑)。 | 低(封装细节,外部调用不感知内部变化)。 |
适用场景 | 简单任务、算法实现(如排序、脚本)。 | 复杂系统、多实体协作(如电商、游戏引擎)。 |
一句话区分
可见性
”或访问权限,以保证外界不能随意更改其内部的属性值,也不能任意调用其内部的功能方法。一般特性
的类,然后在此基础上派生出反映特殊
事物的类。单继承
;子类允许继承多个父类的,称为多继承
,java不支持多继承。重名
现象。java语言有方法重载和对象多态两种形式的多态。在面向对象中类和对象是最基本、最重要的组成单元。
类由属性和行为组成,属性即为一个个的变量,行为即为方法。
class 类名称{
数据类型 属性;
public 返回值的数据类型 方法名称 (参数1,参数2 ...){
程序语句;
return 表达式;
}
}
Student
类:public class Student {
String name;
int age;
String gender;
double height;
double weight;
double Chinesescore;
double mathscore;
public void AllScore() {
double sum = Chinesescore + mathscore;
System.out.println(name+"总成绩为:" + sum);
}
public void AverageScore() {
double average = (Chinesescore + mathscore)/2;
System.out.println(name+"平均成绩为:" + average);
}
}
类名 对象名称 = null; //声明对象
对象名称 = new 类名(); //实例化对象,只要有关键字new就表示开辟新的堆内存空间
当然,也可以一步到位:
类名 对象名称 = new 类名();
访问属性:对象名称.属性名;
访问方法:对象名称.方法名();
以上述的Student类写一个Test类为例:
public class Test {
public static void main(String[] args) {
// 创建对象的格式:类名 对象名 = new 类名();
student s1=new student();
s1.name="张三";
s1.age=18;
s1.gender="男";
s1.height=1.88;
s1.weight=80.5;
s1.Chinesescore=96;
s1.mathscore=100;
System.out.println(s1.name);
System.out.println(s1.age);
System.out.println(s1.gender);
System.out.println(s1.height);
System.out.println(s1.weight);
s1.AllScore();
s1.AverageScore();
}
}
运行结果为:
张三
18
男
1.88
80.5
张三总成绩为:196.0
张三平均成绩为:98.0
在 Java 等编程语言运行时,内存被划分为栈、堆和方法区,三者分工协作:栈内存遵循后进先出原则,存储基本数据类型变量的具体值和引用数据类型变量指向对象的地址,同时在方法调用时创建栈帧记录局部变量、参数和返回地址,方法执行完后栈帧被清理;堆内存如同大型仓库,使用new关键字创建的对象实例存放在此,包含对象的属性、方法等信息;方法区则存放类的结构、静态变量、常量池等信息,类的方法在此存储,当方法被调用时,其代码会加载到栈内存中执行,执行完毕后栈内存中的相关资源被释放,但方法区中的类信息仍保留,直到类被卸载 。