java构造方法与实例化对象的区别?
一、java构造方法与实例化对象的区别
构造方法
构造方法负责对象的初始化工作,为实例变量赋予合适的初始值。必须满足以下的语法规则:
方法名与类名相同;不要返回类型(例如return、void等);不能被static、final、native、abstract和synchronized修饰,不能被子类继承。构造方法的作用域:
当前类的其他构造方法通过this语句调用;
当前类的子类的构造方法通过super语句调用;
在程序中通过new语句调用。
实例化对象
当类的字节码文件加载到内存中时,类的实例方法并没有被分配入口地址,只有当该类的对象创建以后,实例方法才分配了入口地址。从而实例方法可以被类创建的所有对象调用,还有一点需要注意,当我们创建名列前茅个类的对象时,实例方法的入口地址会完成分配,当后续在创建对象时,不会再分配新的入口地址,也可以说,该类的所有对象共享实例方法的入口地址,当该类的所有对象被销毁,入口地址才会消失。
延伸阅读:
二、类方法
当类的字节码文件加载到内存,类方法的入口地址就会分配完成,所以类方法不仅可以被该类的对象调用,也可以直接通过类名完成调用。类方法的入口地址只有程序退出时消失。
因为类方法的入口地址的分配要早于实例方法的入口地址分配时间,所有在定义类方法和实例方法是有以下规则需要遵循:
1. 在类方法中不能引用实例变量
实例变量的定义类似实例方法,没有用static修饰的变量,实例变量的创建与实例方法的创建相同,也是在类的对象创建时完成,所以在类方法中是不能引用实例变量的,因为这个时候实例变量还没有分配内存地址。
2. 在类方法中不能使用super和this关键字
这是因为super和this都指向的是父类和本类的对象,而在类方法中调用的时候,这些指代的对象有可能都还没有创建。

猜你喜欢LIKE
相关推荐HOT
更多>>
大数据和人工智能的区别是什么?
一、大数据和人工智能的区别大数据和人工智能是两个不同的概念,虽然它们之间有一些重叠,但是它们关注的重点是不同的。大数据主要关注海量数据...详情>>
2023-10-13 23:19:27
图片压缩方法有哪些?4种无损图片压缩方法?
在工作中经常出现因为图片太大不能发送或者是上传的情况,这个时候就需要将图片进行压缩才能上传,怎么把图片压缩到200K以内呢?今天就分享给大...详情>>
2023-10-13 21:53:13
Hive中的DISTINCT和GROUP BY的区别是什么?
一、Hive中的DISTINCT和GROUP BY的区别Hive是基于Hadoop的数据仓库工具,支持使用类SQL语言查询存储在Hadoop集群中的数据。在Hive中,DISTINCT...详情>>
2023-10-13 20:51:32
bylayer和byblook的区别?
一、bylayer和byblook的区别1、意思不同bylayer意思是对象属性使用它所在图层的属性。byblock意思是对象属性使用它所在的图块的属性。2、设置方...详情>>
2023-10-13 17:41:18热门推荐
面向人类的语言和面向机器的语言到底有什么区别?
沸大数据和人工智能的区别是什么?
热变量的储存机制是什么?
热Java 假泛型和真泛型语言区别是什么?
新图片压缩方法有哪些?4种无损图片压缩方法?
编程开发环境中,创建工程/项目到底和创建文件有什么区别?
Hive中的DISTINCT和GROUP BY的区别是什么?
java构造方法与实例化对象的区别?
编程中handle与hook什么区别?
PHP if 语句判断时,变量在前跟变量在后有什么区别?
统计学与大数据有什么区别?
factorization machine和logistic regression有什么区别?
机器学习算法中GBDT与Adaboost的区别与联系是什么?
bylayer和byblook的区别?
技术干货






