gpt4 book ai didi

c# - 关于 Java "Properties"和 C#' Properties 之间的区别

转载 作者:行者123 更新时间:2023-11-30 14:56:28 25 4
gpt4 key购买 nike

作为实习的一部分,我使用 C# 工作了整整六个月。我在那次实习中学到的东西是 C# 属性的美妙之处,也就是 setter 和 getter。刚开始实习的时候,properties也是我的一个困惑,但是用了一段时间后,我就爱上了它。

回到 Java 上课,我不得不告别它。

直到..我开始了这个简单的作业:

我的方法和构造函数:

private double xCoor;
private double yCoor;

public Point(double xCoor, double yCoor)
{
this.xCoor = xCoor;
this.yCoor = yCoor;
}

public void setCoor(double xCoor, double yCoor)
{
this.xCoor = xCoor;
this.yCoor = yCoor;
}

public void printCoor()
{
System.out.println("(" + xCoor + ", " + yCoor + ")");
}

为了演示,这是我的主要方法:

    Point pointOne = new Point(6.0, 7.0);
pointOne.printCoor();
pointOne.setCoor(9.0, 3.0);

pointOne.xCoor = 9.0;
pointOne.yCoor = 7.0;

System.out.println("Java Properties: " + pointOne.xCoor);
System.out.println("Java Properties: " + pointOne.yCoor);

如您所知,以 Point pointOne = ..; 开头的前三行是“Java”做事的方式。可以看到打印语句形式的getter和.setCoor(..)形式的setter。

现在,我的问题是,在 Java 中(我刚学过)- 您还可以通过 pointOne.xCoor = .. 的类似属性的声明来设置私有(private)变量,当然,得到它们通过与 pointOne.xCoor 相同的方式。

我知道这种与 C# 方式的差异,因为属性的名称可以手动声明,就像这样(如果它是 C#)。

public string XCoor
{
get { return this.xCoor; }
set { xCoor = value; }
}

谁能帮我理解 Java 处理属性的方式和 C# 方式之间的区别?

最佳答案

在 java 中,如果没有公共(public)的 getter 和 setter 方法,则不能从另一个类设置私有(private)字段。没有 getter 和 setter 方法的私有(private)字段只能在同一个类中设置和查看。

例如

public class A {
private int a;
private int b;
private int c;
public int s;

public A(){
a=5; // In same class
b=3; // In same class
c=7;
s=9;
}

public int sum(){
return a+b; // I can access a and b directly, because we are in the same class with them.
}

public getC(){
return c; // Other classes can read value of c with this public method
}

public setC(int value){
c=value; // Other classes can set value of c with this public method
}

}


public class B{
private A obj = new A(); //

public void someMethod(){
int t = obj.getC(); // this is ok
int g = obj.s; // this is ok because s is public
int f = obj.c // compiler error, c is private, i can't see it from another class directly
int p = obj.a // compiler error, a is private, i can't see it from another class directly
}
}

关于c# - 关于 Java "Properties"和 C#' Properties 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22900456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com