JavaSE——面向对象基础(1/4)-面向对象编程、程序中的对象、对象的产生、对象的执行原理、类和对象的一些注意事项

简介: JavaSE——面向对象基础(1/4)-面向对象编程、程序中的对象、对象的产生、对象的执行原理、类和对象的一些注意事项

面向对象编程

  • 开发一个一个的对象,把数据交给对象,再调用对象的方法来完成对数据的处理。

例如设计一个学生的对象,其中有姓名和成绩等,录入不同的信息就可以产生多个学生的数据。

学生的数据,找学生对象处理;

汽车的数据,找汽车对象处理;

手机的数据,找手机对象处理。

程序中的对象

对象本质上是一种特殊的数据结构

对象的产生

  • class,也就是,也称为对象的设计图(或者对象的模板)。


设计 类 相当于设计一张“表”,有了“表”之后就可以新建对象了。

也就是说,先用class设计出对象的模板,然后再用class来new对象,new出一张张表格,有多少张这样的表格,就有多少个对象。

public class 类名{
    1.变量,用来说明对象可以处理什么数据
    2.方法,描述对象有什么功能,也就是可以对数据进行什么样的处理
    ...
}
类名 对象名 = new 类名();

对象的执行原理

计算机是通过虚拟机中的三块区域(方法区、栈内存、堆内存)配合来执行我们的面向对象程序的,

  1. 首先会执行Test类,因此会先把Test类加载到方法区里面
  2. 然后执行Test类里面的main方法,main方法是提到栈内存进行执行的
  3. 接着就执行main方法的第一行代码,因为此处第一行代码是在创建学生类,因此会把这个学生类也加载到方法区里面
  4. 用这个学生类定义一个s1变量,变量是放在方法里面的,因此它会在main方法里开辟一块变量空间来代表s1这个变量
  5. 执行new对象时,这个new出来的学生对象会放在堆内存里面,会在堆内存中开辟一块内存空间出来,可以把这个内存空间理解成学生表,该内存空间会有自己的地址,学生类里面创建的变量一开始都是初始值,且这个对象里面还有一个类的地址信息,该地址指向当前该学生对象是由哪个类创建的。
  6. 接着会把这个学生类的地址赋值给s1。
  7. 然后就可以根据s1中存储的地址,指向那个学生类,进而改变那个学生类的数据;再通过学生类的地址找到定义它的类,去执行方法。
  • Student s1=new Student();
  • 每次new Student(),就是在堆内存中开辟一块内存区域代表一个学生对象。
  • s1变量里面记住的是学生对象的地址。

如何识别引用类型的变量?

Student s1=new Student();

s1变量中存储的是对象的地址,因此变量s1也称为引用类型的变量。

类和对象的一些注意事项

  • 类名建议用英文单词,首字母大写,满足驼峰模式,且要有意义,比如:Student、Car...
  • 类中定义的变量也称为成员变量(对象的属性),类中定义的方法也称为成员方法(对象的行为)。
  • 成员变量本身存在默认值,在定义成员变量时一般来说不需要赋初始值(没有意义)。
  • 一个代码文件中,可以写多个class类,但只能一个用public修饰,且public修饰的类名必须成为代码文件名。
  • 对象与对象之间的数据不会相互影响,但多个变量指向同一个对象时就会相互影响了。
  • 如果某个对象没有一个变量引用它,则该对象无法被操作了,该对象会成为所谓的垃圾对象。

注意:当堆内存中的对象,没有被任何变量引用(指向)时,就会被判定为内存中的“垃圾”。Java存在自动垃圾回收机制,会自动清楚掉垃圾对象,程序员不用操心。


END



目录
相关文章
|
9月前
|
Python
请简述Python中的继承、封装和多态的概念。
【2月更文挑战第24天】【2月更文挑战第82篇】请简述Python中的继承、封装和多态的概念。
59 1
|
7月前
|
Java 程序员
【Java探索之旅】继承概念_语法_父类的成员访问
【Java探索之旅】继承概念_语法_父类的成员访问
79 10
|
8月前
|
Java 编译器
JavaSE——面向对象基础(2/4)-this关键字、构造器(this的执行原理、应用场景,构造器的特点、应用)
JavaSE——面向对象基础(2/4)-this关键字、构造器(this的执行原理、应用场景,构造器的特点、应用)
47 5
|
8月前
|
Java
JavaSE 面向对象程序设计高级 方法引用 2024详解
JavaSE 面向对象程序设计高级 方法引用 2024详解
28 0
|
9月前
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
97 0
|
9月前
|
数据库 Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(下)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)
106 0
|
9月前
|
存储 JavaScript 前端开发
对象和类:JS是一种基于对象的语言,可以创建和使用自定义对象。ES6引入了类的概念,使得面向对象编程更加方便。
对象和类:JS是一种基于对象的语言,可以创建和使用自定义对象。ES6引入了类的概念,使得面向对象编程更加方便。
47 0
|
存储 SQL Java
《JavaSE-第七章》之抽象的类-实例的对象-合理的封装
《JavaSE-第七章》之抽象的类-实例的对象-合理的封装
110 0
|
Python
【Python零基础入门篇 · 15】:面向对象基础(类和对象)、类属性和实例属性的访问、构造函数
【Python零基础入门篇 · 15】:面向对象基础(类和对象)、类属性和实例属性的访问、构造函数
134 0
【Python零基础入门篇 · 15】:面向对象基础(类和对象)、类属性和实例属性的访问、构造函数
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(中)
## 封装,继承和多态 ## 1.封装 1、满足把内容封装到某个地方,另一个地方去调用封装的内容 2、使用初始化构造方法,或者使用self获取封装的内容 ## 2.继承 子类继承父类的属性和内容
144 0