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

标签 java

我在寻求澄清时想到了这个论坛 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/

相关文章:

java - 在Java中使用BFS的两个城市之间的路径

java - 从泛型函数返回泛型类型

java - 无法对 ROOM 和 Retrofit 使用相同的模型

java - 如何将项目导入Android Studio

java - xmlInputFactory.createXMLStreamReader 在 Weblogic 上给出 null

java - Json 序列化为带有嵌套 List<pojo> 属性的 java pojo

java - 从 Firestore JAVA 删除消息

java - java 中的 NumberFormatException、BigInteger

java - 指定方法参数必须从一个类继承并实现一个接口(interface)

java - 在运行时动态选择一个 spring-batch reader