首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >房地产的动机是什么?

房地产的动机是什么?
EN

Stack Overflow用户
提问于 2009-03-02 21:59:00
回答 12查看 859关注 0票数 3

我有点搞不懂为什么语言会有这些。我是一名Java程序员,在我职业生涯的初期,Java是我开始使用的唯一一种语言,你知道的。

所以在Java中,我们当然没有属性,我们编写了getThis()和setThat(.)方法。

我们拥有财产会得到什么好处?

谢谢。

编辑:另一个查询:在具有属性的语言中会产生哪些命名约定?

EN

回答 12

Stack Overflow用户

发布于 2009-03-02 22:02:58

你觉得哪一个更自然?

代码语言:javascript
复制
// A
person.setAge(25)
// B
person.age = 25;
// or
person.Age = 25; //depending on conventions, but that's beside the point

大多数人会回答B。

它不仅是语法糖,而且在进行反射时也很有帮助;您实际上可以在数据和操作之间做出区别,而不需要使用方法的名称。

下面是C#中不熟悉属性的人的一个示例:

代码语言:javascript
复制
class Person
{
    public int Age
    {
        set
        {
            if(value<0)
                throw new ArgumentOutOfRangeException();

            OnChanged();
            age = value;
        }

        get { return age; }
    }

    private int age;
    protected virtual void OnChanged() { // ... }
}

而且,大多数人以后总是使用属性而不是提升公共成员,原因与我们总是使用get/set的原因相同;没有必要重写绑定到数据成员的旧客户端代码。

票数 9
EN

Stack Overflow用户

发布于 2009-03-02 22:04:03

语法要好得多:

代码语言:javascript
复制
button.Location += delta;

超过:

代码语言:javascript
复制
button.setLocation(button.getLocation() + delta);
票数 7
EN

Stack Overflow用户

发布于 2009-03-02 22:10:18

编辑:

下面的代码假设您正在手工完成所有操作。在我的示例世界中,编译器将生成简单的get/set方法,并将所有直接变量访问转换到这些方法。如果不是这样的话,那么客户端代码将不得不重新编译,这很大程度上违背了目的。

原件:

属性的主要参数是,如果从变量转到方法,则不需要重新编译代码。

例如:

代码语言:javascript
复制
public class Foo
{
    public int bar;
}

如果我们稍后决定对"bar“进行验证,则需要这样做:

代码语言:javascript
复制
public class Foo
{
    private int bar;

    public void setBar(final int val)
    {
        if(val <= 0)
        {
            throw new IllegalArgumentException("val must be > 0, was: " + val);
        }

        bar = val;
    }

    public int getBar()
    {
        return (bar);
    }
}

但是添加set/get方法会破坏所有的代码。如果它是通过属性完成的,那么您可以在不破坏客户端代码的情况下在事实之后添加验证。

就我个人而言,我不喜欢这个想法--我更喜欢使用注释,让简单的set/get自动获取,并能够根据需要发布自己的set/get实现(但我不喜欢隐藏的方法调用)。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/604188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档