首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java静态成员与C++静态成员的区别

Java静态成员与C++静态成员的区别
EN

Stack Overflow用户
提问于 2016-03-08 21:31:15
回答 2查看 672关注 0票数 3

我已经学习了C++,现在我正在学习Java。在C++中,我们可以在非静态/实例成员函数中使用静态成员。但是在学习Java的过程中,我发现了这个:

我写了一个程序来检查“非静态函数是否可以访问静态成员”。并且在下面的程序中没有问题:

代码语言:javascript
运行
复制
public class Animal
{
    static int CountOfAnimal;
    public Animal()
    {
        CountOfAnimal++;
    }
    public int showCount()
    {
        CountOfAnimal++;
        return CountOfAnimal;
    }
    public static void main(String []args)
    {
        new Animal();
        new Animal();
        Animal C = new Animal();
        System.out.println("Total animals are : " + C.showCount());
    }
}

那么,我可以说在Java中非静态/实例成员函数也可以访问同一个类的静态成员吗?

另外,我想知道除了调用成员的方式之外,Java和C++中的静态成员(方法和变量)之间是否有任何区别?

我知道的一个区别是在C++中调用静态成员的方式与在Java语言中调用静态成员的方式不同。还有其他的吗?

EN

回答 2

Stack Overflow用户

发布于 2016-03-08 21:33:37

是。注意,它并不是说非静态方法不能访问静态类成员,而这正是您的代码所做的。它说明静态方法不能访问非静态类成员(或方法)。情况正好相反。

出于完全相同的、潜在的、根本的原因,C++也是如此。

票数 2
EN

Stack Overflow用户

发布于 2016-03-08 21:46:17

就像Sam Varshavchik提到的“静态方法不能访问非静态类成员”。

对于您的另一个问题,C++中的静态和Java之间的区别是什么。

C++支持静态局部变量。Java不需要。

例如:在C++中完全有效,但在Java.中出错

代码语言:javascript
运行
复制
static int fun()  {
     static int abc = 1;
   }

Java支持静态块/静态类。C++并非如此

例如:

代码语言:javascript
运行
复制
static
{
   System.out.println("Static block called");
}

class TestOuter1{  
  static int data=30;  
  static class Inner{  
   void msg(){System.out.println("data is "+data);}  
  }  
  public static void main(String args[]){  
  TestOuter1.Inner obj=new TestOuter1.Inner();  
  obj.msg();  
  }  
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35868806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档