Chost 发表于 2020-5-28 17:20

关于java类的理解问题

本帖最后由 Chost 于 2020-5-28 20:39 编辑

public class InstanceCounter {
         private static int numInstances = 0;
         protected static int getCount() {
            return numInstances;
         }
         
         private static void addInstance() {
            numInstances++;
         }
         
         InstanceCounter() {
            InstanceCounter.addInstance();
         }
         
         public static void main(String[] arguments) {
            System.out.println("Starting with " +
            InstanceCounter.getCount() + " instances");
            for (int i = 0; i < 500; ++i){
               new InstanceCounter();
                  }
            System.out.println("Created " +
            InstanceCounter.getCount() + " instances");
         }
      }
第11、12行,InstanceCounter这个类为什么可以直接调用方法,而没有创建对象来调用
第19行new是怎么理解

Vjmms 发表于 2020-5-28 17:26

addInstance( ) 前面有关键字 static, 这样的方法叫类方法,可以通过类名来访问。

Chost 发表于 2020-5-28 17:36

Vjmms 发表于 2020-5-28 17:26
addInstance( ) 前面有关键字 static, 这样的方法叫类方法,可以通过类名来访问。

static定义的方法是静态方法,
也叫作类方法嘛?
能解释一下第19的new吗,也不像是创建一个对象啊

qzhing 发表于 2020-5-28 17:47

我觉得你需要找一个培训机构(比如黑马)的Java入门视频,这样就都懂了

Chost 发表于 2020-5-28 17:53

qzhing 发表于 2020-5-28 17:47
我觉得你需要找一个培训机构(比如黑马)的Java入门视频,这样就都懂了

大部分都懂,只是有些细节有疑问,感觉看视频太浪费时间了

VAE520 发表于 2020-5-28 17:54

new创建对象会调用无参构造方法,无法构造方法又通过类名调用静态方法。

往事随风不苦涩 发表于 2020-5-28 17:57

本帖最后由 往事随风不苦涩 于 2020-5-28 17:59 编辑

Chost 发表于 2020-5-28 17:36
static定义的方法是静态方法,
也叫作类方法嘛?
能解释一下第19的new吗,也不像是创建一个对象啊
new关键字创建了一个对象,只是没有把创建的对象的地址交给其他变量。这个叫匿名对象。

匿名对象知识点
链接:https://pan.baidu.com/s/17KCPrz0KGv03BWXaOU_VSg
提取码:g9pc

不苦小和尚 发表于 2020-5-28 18:04

这里的NEW没有什么意思,调用的是默认的无参构造函数,只是掩饰静态方法使用而已

Chost 发表于 2020-5-28 18:21

不苦小和尚 发表于 2020-5-28 18:04
这里的NEW没有什么意思,调用的是默认的无参构造函数,只是掩饰静态方法使用而已

既然类名可以调用静态方法和变量,是不是就不用创建对象,第19行这样写就没意义了?

Chost 发表于 2020-5-28 18:23

VAE520 发表于 2020-5-28 17:54
new创建对象会调用无参构造方法,无法构造方法又通过类名调用静态方法。

第19行创建对象,但对象的名字没写出呀
页: [1] 2
查看完整版本: 关于java类的理解问题