gpt4 book ai didi

java - 类和对象之间的编码差异

转载 作者:行者123 更新时间:2023-11-30 01:46:40 28 4
gpt4 key购买 nike

我在寻求澄清时想到了这个论坛java文献中的声明。该声明是;

“当您调用对象方法时,Java 会查找该方法对象类中的方法定义。如果没有的话找到一个,它通过类层次结构调用方法直到找到方法定义。”

我的困惑源于试图理解有目的的为类编码时的编码方式不同对象的编码。

我认为编码差异是由于类在物理上的不同造成的位于内存中与对象所在位置不同的部分,当程序加载到内存中时。

类被加载到“Data”部分,同时对象被加载进入堆栈或堆。

回到 Java 文献中的声明。

如果我尝试调用对象的方法、实例化的类、对象蓝图,则该方法位于其对象内的堆栈或堆中。

那么为什么 Java 会在数据部分的不同部分寻找对象的方法呢?

最佳答案

When you call an objects method, Java looks for that method definition in the object's class. If it doesn't find one, it passes the method call up the class hierarchy until it finds a method definition

让我们通过一个例子来理解它的含义。

考虑类

class BestFriend { 
String name;
int age;

BestFriend (String name, int age)
{
this.name = name;
this.age = age;
}
public String toString()
{
return name + " " + age + " ";
}
public static void main(String[] args)
{
BestFriend friend = new BestFriend ("Gulpreet Kaur", 21);
System.out.println(friend );
System.out.println(friend.toString());
}
}
  • 这里我创建的对象是“friend”,当我调用对象方法 toString() 时,它会在 BestFriend 类中查找该方法定义。因为我已经实现了 toString() 方法,所以它将调用该方法。
  • 如果我没有在 BestFriend 类中实现 toString 方法,它会将方法调用传递给 Object 类,java 中的每个类都直接或间接地是 Object 类的子类。 Object 类包含 toString() 方法。
  • 因此,它将方法调用传递到类层次结构中,直到找到方法定义

关于java - 类和对象之间的编码差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57690955/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com