静态成员方法和普通成员方法的问题

静态成员方法和普通成员方法的问题

对于静态成员方法来说,它是由类来进行维护的,存在于堆中的静态内存区,优先于对象存在

但是对于普通方法来说,也是被对象所共有的,每次实例化一个对象,都只是开辟一块存放属于这个对象的成员变量,那么这个时候普通成员方法是怎么一回事呢?它是也和静态成员方法一样当类第一次被加载时就产生还是怎么一回事?

由于静态成员方法和普通成员方法都是唯一的,被对象所共有,那么静态成员方法存在的意义又是什么呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕小脸 2020-10-07 11:36:27

同学你好,创建出来的对象只包含属于各自的成员变量,并不包括成员方法。且成员方法不调用时存在方法区中的静态区

注:同一个类的对象拥有各自的成员变量,存储在各自的堆中,但是他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~


  • 既然一个类的对象共享该类的方法,那么这些方法是什么时候被创建的呢?又是存放在哪里呢?和存放静态成员方法是在一个地方吗

    2021-01-20 21:53:19
  • 同学你好,

    1、在某类中需要定义该方法时,就会被创建。例如:

    public class TestDemo {
    public void play() {
    System.out.println("小鸟会飞");
    }
    }

    且普通方法只有先创建类的实例对象后,才能调用普通方法

    TestDemo td=new TestDemo();
    td.play();

    ​2、是的,存放在方法区

    祝学习愉快~

    2021-01-21 10:20:38
好帮手慕小尤 2020-09-29 10:27:48

同学你好,1. 普通成员方法和成员变量都是在实例化类时进行创建的。

2. 静态成员方法是全局唯一的方法,而普通成员方法是当前类中的唯一方法。所以当需要定义全局方法时,则可以定义为静态成员方法。

祝学习愉快!

  • 请问,你的意思是说,每当创建一个对象时,都会替这个对象创建属于他的成员变量和成员方法对吗?但如果是这个样子的话,为什么在对象的引用指向的堆内存中的内容只是包括了属于这个对象的成员变量呢?请问属于这个对象的成员方法在哪里呢? 而且,替每一个对象创建属于他的成员方法有何意义呢?为什么不能像静态成员方法一样,被所有对象所共有呢?
    2020-09-30 21:56:05
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师