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();
}
}