封装、访问器C与Java

封装、访问器C与Java,java,c#,encapsulation,accessor,Java,C#,Encapsulation,Accessor,一个关于CvsJava中的封装和访问器的快速问题。 C中的代码是否与下面Java中的代码相同 C#: class MyClass{ public string var1 {get; private set;} public int var2 {get; private set;} public MyClass(string aString, int anInt){ this.var1= aString; this.var2=anInt;

一个关于
C
vs
Java
中的封装和访问器的快速问题。
C
中的代码是否与下面Java中的代码相同

C#

class MyClass{

    public string var1 {get; private set;}
    public int var2 {get; private set;}

    public MyClass(string aString, int anInt){
        this.var1= aString;
        this.var2=anInt;
    }

}
java

//Java
class MyClass{

    private String var1;
    private int var2;

    public MyClass(String aString, int anInt){
        this.var1= aString;
        this.var2=anInt;
    }

    public String getVar1(){
        return this.var1;
    }

    public void setVar1(int anInt){
         this.var1 = anInt;
    }

    public int getVar2(){
        return this.var2;
    }

    public void setVar2(String aString){
         this.var2 = aString;
    }

}
我来自
java
世界,不确定
C

中的访问器是否缩短了不,在C代码中有私有setter,在java代码中它们是公共的

相当于Java代码的C#是:

public string Var1 { get; set; }
public int Var2 { get; set; }

(我已将名称更改为遵循.NET命名约定-属性为PASCALCASE。)

老实说,您可能不应该在这两个字段中都有公共集合字段


拥有一个公共的变种人有什么好处?我很少看到有理由使用公共mutator。

void int
void String
不是有效的返回类型…;)在没有IDE的情况下编写代码时,有一个有趣的坏习惯,感谢我现在看到的更正OK,尽管setter@JimC:您没有声明公共变量-只是一个公共属性。支持字段仍然是私有的。C版本没有公共的变异子。我知道。我只是做一个一般性的陈述。爪哇人做了,如果他让它得到;设置在C#to match中,他们都会公开,可能不应该公开。