相关疑难解决方法(0)

像Java中的对象一样结构化

是否完全违反Java方式来创建类似对象的结构?

class SomeData1 {
    public int x;
    public int y;
}
Run Code Online (Sandbox Code Playgroud)

我可以看到一个带有访问器和mutator的类更像Java.

class SomeData2 {
    int getX();
    void setX(int x);

    int getY();
    void setY(int y);

    private int x;
    private int y;
}
Run Code Online (Sandbox Code Playgroud)

第一个例子中的类是符号方便的.

// a function in a class
public int f(SomeData1 d) {
    return (3 * d.x) / d.y;
}
Run Code Online (Sandbox Code Playgroud)

这不方便.

// a function in a class
public int f(SomeData2 d) {
    return (3 * d.getX()) / d.getY();
}
Run Code Online (Sandbox Code Playgroud)

java oop struct

194
推荐指数
8
解决办法
34万
查看次数

访问私有财产而不获取/设置

可能重复:
Java中缺少属性语法

请参阅以下情况:

class Test extends Object {
    private int x;
    public getX() {return x;}
    public setX(int _x) {x = _x;}
}
Run Code Online (Sandbox Code Playgroud)

如你所见,没什么特别的.但是,我想知道是否可以保持"私有x"的方式,使用该类的人不需要使用getX(),换句话说,如果我可以映射一些自动调用的变量得到并设定.

像德尔福的"财产"之类的东西.它可以避免在复杂表达式中使用setX()和getX(),并且可以简化对谁读取表达式的理解.

例如,假设可以使用另一个标识符xx和yy来代替get和set方法.看到:

import Test;
public static void main(String[] args) {
    new Test() {
        setX(10);
        setY(20);
        int z = getX() * getY() + (getY() * getY());
        System.out.println("%d", z);
    }
    // would be like this
    new Test() {
        xx = 10;
        yy = 20;
        int z = xx * yy + (yy * yy); // xx would access the …
Run Code Online (Sandbox Code Playgroud)

java encapsulation properties private-members

6
推荐指数
3
解决办法
5965
查看次数

Objective-c和Java之间的字段,我不理解@property和实例变量

从两天前开始学习objective-c的开发人员,我不明白以下两种方法之间的区别:

1.

 @interface Person : NSObject

   @property NSString *firstName;
   @property NSString *lastName;

 @end
Run Code Online (Sandbox Code Playgroud)

2.

  @interface Person : NSObject{

    NSString *firstName;
    NSString *lastName;
  }

 @end
Run Code Online (Sandbox Code Playgroud)

使用Java语言,我们定义了两个字符串字段:

class Person extends Object{
  (public/private/protected) String firstName;
  (public/private/protected) String lastName;
}
Run Code Online (Sandbox Code Playgroud)

我想知道哪一个(1到2之间)与上面的Java代码有相同的含义.


非常感谢@iamyogish @ Popeye,如果我的答案是对的,我会纠正你们两个.阅读完电子书:Objective-C 2.0 Essentials后,我了解到(如果不对,请告诉我.):

@interface Person : NSObject

   @property NSString *firstName;
   @property NSString *lastName;

 @end
Run Code Online (Sandbox Code Playgroud)

这相当于Java代码:

class Person extends Object{
 private  String firstName;
 private String lastName;//In fact:private should be protected
 //setter and getter.
 //you can use ecplise tool to generate setter/getter method …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c

0
推荐指数
1
解决办法
169
查看次数