首页 青云排行榜 知识中心 控制台

在JAVA中,关于实例方法和类方法,以下描述正确的是:(     )

实例方法只能访问实例变量

类方法既可以访问类变量,也可以访问实例变量

类方法只能通过类名来调用

实例方法只能通过对象来调用

一. 实例方法
当类的字节码文件加载到内存中时,类的实例方法并没有被分配入口地址,只有当该类的对象创建以后,实例方法才分配了入口地址。从而实例方法可以被类创建的所有对象调用,还有一点需要注意,当我们创建第一个类的对象时,实例方法的入口地址会完成分配,当后续在创建对象时,不会再分配新的入口地址,也可以说,该类的所有对象共享实例方法的入口地址,当该类的所有对象被销毁,入口地址才会消失。

二. 类方法
当类的字节码文件加载到内存,类方法的入口地址就会分配完成,所以类方法不仅可以被该类的对象调用,也可以直接通过类名完成调用。类方法的入口地址只有程序退出时消失。

因为类方法的入口地址的分配要早于实例方法的入口地址分配时间,所有在定义类方法和实例方法是有以下规则需要遵循:
1. 在类方法中不能引用实例变量
    实例变量的定义类似实例方法,没有用static修饰的变量,实例变量的创建与实例方法的创建相同,也是在类的对象创建时完成,所以在类方法中是不能引用实例变量的,因为这个时候实例变量还没有分配内存地址。
2. 在类方法中不能使用super和this关键字
    这是因为super和this都指向的是父类和本类的对象,而在类方法中调用的时候,这些指代的对象有可能都还没有创建。
3. 类方法中不能直接调用实例方法(mian方法中,怎么可以用对象调用实例方法)其他的类方法也可以调用实例方法))
    静态方法不能直接调用实例方法和变量,但可以间接调用(即在静态方法中创建类的实例,然后调用)

与类方法相比,实例方法的定义就没有什么限制了:
1. 实例方法可以引用类变量和实例变量
2. 实例方法可以使用super和this关键字
3. 实例方法中可以调用类方法

1)实例方法可以直接访问实例变量,调用实例方法;
2) 实例方法可以直接访问类变量,调用类方法。但不推荐这么做,原因是不清晰,容易把类变量误认为是实例变量,把类方法误认为是实例方法(借助IDE,它会给出警告信息。);
3)类方法可以直接调用类变量和类方法;
4)类方法不能直接调用实例变量和实例方法;
5)类方法里面不能使用“this”关键字,因为没有实例存在,“this”不知道引用哪个实例。
关于我们
公司简介
联系我们
联系我们
售前咨询: leizhongnan@eval100.com
售后服务: 0755-26415932
商务合作: support@eval100.com
友情链接
金蝶软件
快递100
关注我们
Copyright © 2023-2023 深圳慧题科技有限公司 粤ICP备2023109746号-1 粤公网安备44030002001082