Java三十四:Java中 类、对象、属性、方法四者之间的关系和应用综述

必发365app官网 📅 2025-07-04 00:30:03 👤 admin 👀 731 ❤️ 617
Java三十四:Java中 类、对象、属性、方法四者之间的关系和应用综述

类、对象、属性、方法综述

一、综述

(一)Java的核心思想是:OOP,面向对象编程

上帝视角,面对一个复杂的项目/问题,从宏观角度进行分类,建模剖析,从而产生不同种类的类;

不同的类,会根据对该细分领域的分析构造出对应的属性和方法 ,相当于一个模板;

在对某一类进行引用时,需要将该类的模板具体化,形成一个个的能产生实际功效的分身,将其中的属性进行具体定义,从而形成对象。

(二)面向过程和面向对象的区别

面向过程(执行者)

强调的是功能行为,以函数为最小单位,考虑怎么做

面向对象(指挥者)

强调具备了功能的对象,以类/对象为最小单位,考虑谁来做

① 根据问题需要,选择问题所针对的现实世界中的实体 ② 从实体中寻找解决问题相关的属性和功能,这些属性和功能就形成了概念世界中的类 ③ 把抽象的实体用计算机语言进行描述,形成计算机世界中的定义。即借助某种程序语言,把类构造成计算机能够识别和处理的数据结构 ④ 将类实例化成计算机世界中的对象,对象时计算机世界中解决问题的最终工具。

(三)面向对象的实现

设计类,其实就是设计类的成员

属性 = 成员变量 方法 = 成员方法

思想落地实现

① 创建类,设计类的成员 ② 创建类的对象(new) ③ 通过“对象.属性” 或 “对象.方法” 调用对象的结构

如果创建了一个类和多个对象,则每个对象都独立拥有一套类的属性(针对非static型的)。意味着,如果我们修改一个对象的属性a,则不影响另外一个属性a的值

Perpon p2 = p1;

那么p2 和 p1任意一个对象有过更改,都会在对方那产生相应的改变,因为上面的赋值运算时内存地址的赋值,相当于两个实例对象指向的时同一片内存。

(四)万事万物皆对象

在Java语言范畴中,我们将功能、结构等封装到类中,通过类的实例化,来调用具体的功能结构 ① Scanner、String等 ② 文件,File ③ 网络资源,URL

涉及到Java语言与前端Html、后端的数据库交互,前后端的结构在Java层面交互时,都体现为类、对象

二、类

概念: 是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物。

比如:动物、植物、手机、Person类、Car类等

初始化/启动 (1)一个类中,包含属性、构造器、代码块、方法、内部类

(2)一个项目中应该只存在一个main方法

构造器 在新建了一个类之后,即使里面什么都不写,里面也会存在一个没有参数的方法,即构造器

它有下面的特点 ① 必须和类的名字相同 ② 必须没有返回类型,也不能写void

定义构造器的格式:

权限修饰符 类名(形参列表){

​ 功能体

​ }

默认构造器的权限和类的权限相同

作用一:创建对象

Person p = new Person();

作用二:给对象的属性进行初始化

通过方法体,初始化一些属性的值。

作用三:可以定义多个构造器,也叫做构造器的重载,此时系统不再提供默认的构造器,且必须把无参的构造器显性写出。

public class Constructor {

String name;

//无参构造器

public Constructor(){

this.name = "qingjia";

}

//有参构造器

public Constructor(String name){

this.name = name;

}

}

代码块(初始化块) ① 代码块的作用:用来初始化类、对象;

② 修饰符:只能用static修饰

③分类:静态代码块 vs 非静态代码块

静态代码块

- 内部可以有输出语句

- 随着类的加载而执行,而且**只执行一次**

- 作用,初始化类的信息

- 如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行

- 静态代码块的执行,优先于非静态代码块的执行

- 静态代码块内只能调用静态的属性和静态的方法,不能调用非静态结构

非静态代码块

- 内部可以有输出语句

- 随着对象的创建而执行

- 非静态代码块随着**每创建一个对象,就执行一次**

- 作用:可以在创建对象时,对对象的属性等进行初始化

- 既可以调用静态结构,也可以调用非静态结构

三、对象

在抽象的概念内,能够体现出特点,展现出功能的是具体的每个个体,也称为实例。 如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的非静态属性(静态属性为所有对象共有)。意味着,如果我们修改一个对象的属性a,则不影响另一个对象属性a的值。

创建对象 使用 new 关键字创建来对象,同时会给对象分配一些默认的值和空间(内存)

内存解析 ① 堆(Heap)

唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。在Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配内存空间

对象:是一个广义上的对象,即包括类实例化后的对象,也包括数组(数组的定义也要new)

② 栈(Stack)

指虚拟机栈,用于存储局部变量等。局部变量表存放了编译器可知长度的各种基本数据类型(boolean、byte、char、short、int、float、long、double)、对象引用(reference类型,它不等同与对象本身,是对象在堆内存的首地址)。方法执行完,自动释放。

③ 方法区(Method Area)

用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据

创建对象型数组

Student[ ] arr = new Student[20] ;

package oop;

import java.util.Arrays;

/**

* 功能

* 1.创建20个学生对象,学号为1-20,年级和成绩都有随机数确定

* 2.打印3年级的学生的信息

* 3.使用冒泡排序法个学生排序,并遍历所有学生的信息

* 提示

* 1.生成随机数:Math.random(),返回值类型double

* 2.四舍五入取整:Mat

🍵 相关养生推荐

玩家汇总测试传说装备特效 鬼剑duang战士必看
必发365app官网

玩家汇总测试传说装备特效 鬼剑duang战士必看

📅 07-03 👀 8625
蜂窝能吃吗 蜂窝怎么吃
365bet网上平台

蜂窝能吃吗 蜂窝怎么吃

📅 07-03 👀 8786
煤气灶风门在哪个部位?如何正确调节煤气灶风门?
365bet网上娱乐场

煤气灶风门在哪个部位?如何正确调节煤气灶风门?

📅 07-01 👀 5185