java - 为什么我们有非静态函数/方法?

标签 java c++ oop

<分区>

我突然想知道为什么我们有非静态函数/方法?方法不是对象的属性(如属性/数据成员)并且该类的所有实例都使用相同的方法,那么为什么静态和非静态方法之间存在区别?这是否意味着当一个对象被实例化时,它拥有方法的拷贝——对于该类的所有实例来说,这些方法是完全相同的?

编辑:所有负面因素是什么?我的观点是正确的——方法的行为不会因对象的每个实例而改变。每个对象的方法都是相同的,只是不同的对象调用了方法,那么为什么我们需要使方法成为对象的一部分呢?为什么不能只存储一次方法(如静态方法)然后在使用“this”时我们在相关对象上执行?对于每个实例,将非静态方法存储为对象的一部分似乎很愚蠢。

最佳答案

静态方法通常不依赖于或改变对象的状态。非静态方法通常会这样做。

至于方法代码是否包含在对象的每个实例中,不,不是。

基本上每个方法都定义一次,然后this作为参数默默传入。有点过于简单化了,但希望能理解这个想法。

关于java - 为什么我们有非静态函数/方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10149920/

相关文章:

c# - 这段代码应该是基类而不是接口(interface)吗?

java - 如何从订阅者返回 Observable?

java - Servlet 路径错误

c++ - 如何使用 bind 基于::second pair 成员排序的 std::pair 创建集合

c++ - 需要有关 Qt 代码块配置的帮助!

java - 在不使用对象的情况下对不同数据类型的多个数组进行排序

java - 持久化 API 的类注释与接口(interface)

java - 如何向提供者注入(inject)集合

c++ - 如何使用静态库(.a 文件)而不是一组目标文件(.o)来创建共享库

java - 在java中访问祖 parent 方法