Java的静态成员与C+的静态成员之间的差异+; 我学习了C++,现在我正在学习java。在C++中,我们可以在非静态/实例成员函数中使用静态成员。但在研究Java时,我发现:

Java的静态成员与C+的静态成员之间的差异+; 我学习了C++,现在我正在学习java。在C++中,我们可以在非静态/实例成员函数中使用静态成员。但在研究Java时,我发现:,java,c++,class,static,Java,C++,Class,Static,我写了一个程序来检查“非静态函数是否可以访问静态成员”。下面的程序没有问题: public class Animal { static int CountOfAnimal; public Animal() { CountOfAnimal++; } public int showCount() { CountOfAnimal++; return CountOfAnimal; } publ

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

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中,非静态/实例成员函数也可以访问同一类的静态成员吗

也,我想知道爪哇和C++中静态成员(方法和变量)是否不同于调用成员的方式?< /P>


<> P>一个不同之处在于,调用C++中的静态成员,并调用java中的静态成员。还有别的吗?

有。请注意,它并不是说非静态方法不能访问静态类成员,这是您的代码所做的。它表示静态方法不能访问非静态类成员(或方法)。反过来说


<>这也是C++中的完全相同的、根本的、根本的原因。

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

你的另一个问题,C++和java中的静态区别是什么?< /P> C++支持静态局部变量。Java没有

EX:<强> > C++中有效,但java中出错。< /强>

static int fun()  {
     static int abc = 1;
   }
Java支持静态块/静态类。C++没有< /P> 例:


我可以说在Java中,非静态/实例成员函数也可以访问同一类的静态成员吗?
可以。你引用的这段话与此没有任何矛盾,因此不清楚你为什么从一开始就怀疑这个命题。@IgorTandetnik:谢谢,所以java和c++的静态成员之间没有其他区别(接受调用方式)?这个问题是基于对引用文本的误解。投票关闭。C++中所有嵌套类都相当于java中的静态内部类。C++ 11 lambDas与java中非静态内部类相当,它们以捕获局部变量的方式进行。@ SAMVARSHIVCHK,我不知道C++ LAMBDAS。但是java中的静态内部类与C++内部类有很大的不同。AFEK,C++内部类可以访问外部类的私有变量,但是java中不支持这一点,因为只能访问静态变量。所以我认为C++内部类与java的内部类有一些相似之处,而不是java的静态类。你同意吗?@Infinity,如果答案是肯定的。你能接受答案并结束这个问题吗?
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();  
  }  
}