ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java面向对象-类与对象的关系

2021-07-27 18:04:00  阅读:138  来源: 互联网

标签:java 对象 s1 创建对象 面向对象 实例 内存 new


java面向对象-类与对象的关系


  • 类是一种抽象的数据类型,它是对某一事物整体描述/定义,但是并不能代表某一个具体的事物,是一个模板
  • 如Person类、Pet类、Car类…Pet类里面有猫狗,Car类里面有轿车,货车,这些类都是用来描述/定义某一类具体的事物应该具备的特点(属性)和行为(方法)

对象

  • 对象是抽象概念的具体实例
  • 张三就是人的一个具体实例,张 三家里的旺财就是狗的一个具体实例
  • 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念

创建与初始化对象

  • 使用new关键字创建对象
  • 使用new关键字创建对象时,除了分配内存空间之外,还会给 创建好的对象 进行 默认的初始化以及对 类中构造器的调用

构造方法

  • 类中的构造器也被称为 构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点:
    1.必须和类的名字相同
    2.必须没有返回类型,也不能写void
    3.一旦定义了有参构造,无参构造就必须显示定义

  • 一个类即使什么都不写,它也会存在一个构造方法

作用:

  • 可以实例化初始值
  • 使用new关键字时,本质是在调用构造器
  • 构造器一般用来初始化实例变量
  • 换句话说:构造方法就是用来创建对象的,并且同时给对象的属性赋值(注意:当实例变量没有手动赋值时,系统会赋默认值)

创建对象内存分析

在这里插入图片描述在这里插入图片描述
解析:

  • 首先类是最先被加载出来的,所以Student、StudentTest类都放在方法区,方法区也在堆里;
  • 首先我们要知道s1这个变量它是局部变量,因为在方法里的变量都叫局部变量,变量s1又是通过main方法来创建的,main方法又在栈中,栈中主要存储局部变量,而方法所需要的内存都是在栈中分配的,所以Student对象是通过栈来分配空间的,并且有个内存地址:0*1234;我们可以通过引用变量名s1来找到并引用这个空间。
  • 从上图可以看出,我们在main方法中实例化了一个Student对象 :Student s1 = new Studnet(); new运算符的作用就是在堆内存中开辟一块空间,那么通过new创建出来的对象都在堆内存中,堆内存中存储对象及对象的实例变量(成员变量),所以s1这个对象就在堆内存中,并且有个地址:0*1234;

引用与对象的区别
-对象是通过new出来的,在堆内存中存储,对象是通过引用来操作的
引用是:但凡是变量名,并且该变量名中保存了内存地址指向了堆内存当中的对象的

标签:java,对象,s1,创建对象,面向对象,实例,内存,new
来源: https://blog.csdn.net/qq_60264381/article/details/119143631

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有