没有子类的类中的一个普通方法是动态绑定还是静态绑定?

Java中的方法中,只有private、static和final修饰的方法以及构造方法是静态绑定,其他的方法全部为动态绑定。
动态绑定是多态的一种,那么,没有子类的类中的一个非private、static、final方法,也就是一个普通方法,这个方法也是动态绑定的吗?那它动态绑定的意义在哪里呢?这种方法不是在编译期就可以确定它只能被本类对象调用了吗?

要分清动态绑定和静态绑定的概念,我理解如果方法没有重写,是不存在动态绑定的,就像你说的编译期就确定了。

可以参考这个博客
https://blog.csdn.net/weixin_36421759/article/details/114064117

什么都不写默认是default,同一包内可见
所以并非只有本类可调用

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7548279
  • 这篇博客也不错, 你可以看下Java程序定义private的成员变量,并定义两个成员方法,一个成员方法实现为此成员变量赋值,另一个成员方法获取这个成员的值,保证其他类继承类时能获取该类的成员变量值。
  • 除此之外, 这篇博客: JAVA构造方法(与类名相同的方法),类方法与实例方法中的 类方法(静态方法,用static修饰的方法) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 类方法是属于整个类的,所以类方法的方法体中不能有与类的对象有关的内容。
    即类方法体有如下限制:
    1.类方法中不能引用对象变量;
    2.类方法中不能调用类的对象方法;
    3.类方法不能被覆盖(重写);
    4.在类方法中不能调使用super,this关键字;

  • 以下回答由chatgpt基于相关博客总结生成:

    对于Java中没有任何子类的类中的普通方法来说,它同样也是动态绑定的。动态绑定的意义在于可以在运行时确定调用哪个对象的方法,尽管在编译期可能无法确定。以下是解决该问题的步骤:

    1. 确认Java中哪些方法是静态绑定,哪些方法是动态绑定。在Java中,只有private、static和final修饰的方法以及构造方法是静态绑定的,其他的方法全部为动态绑定。

    2. 建立一个没有任何子类的类,并在其中添加一个非private、static、final方法。例如:

    public class MyClass { public void myMethod() { System.out.println("This is myMethod."); } }

    1. 在main方法中创建MyClass的实例,并调用myMethod方法。例如:

    public static void main(String[] args) { MyClass myObj = new MyClass(); myObj.myMethod(); }

    运行程序,可以看到输出为"This is myMethod.",说明myMethod是动态绑定的,即在运行时确定调用哪个对象的方法。

    1. 解释动态绑定的意义在哪里,因为这种方法不是在编译期就可以确定它只能被本类对象调用吗?动态绑定的意义在于可以在运行时确定调用哪个对象的方法,尽管在编译期可能无法确定。这样做的好处是可以使代码更加灵活,提高代码的可重用性。例如,如果我们定义一个接口,不同类可以实现该接口并实现其中的方法,然后我们可以将不同类的对象存储在同一个数组中,并依次调用它们的方法,而不需要关心具体是哪个类的对象。