【问题标题】:How to access variables from another class using getter如何使用 getter 从另一个类访问变量
【发布时间】:2020-02-09 08:26:00
【问题描述】:
我是一名初级程序员,我很难掌握 getter 和 setter。我只是不明白这一点。
我正在尝试访问 A 类中的变量并在 B 类中使用该值来执行某些功能。我以为我可以使用 getter 来访问该值,但返回 null 因为我知道我现在正在创建一个具有新值的新对象。那么,吸气剂的意义何在?
我使用方法参数传递了变量,但这对我的初学者来说似乎违反直觉。我只是不明白整个概念。还是我错了。我可以使用 getter 来访问另一个类的变量的值而不使其成为静态变量吗?
【问题讨论】:
标签:
getter
instance-variables
【解决方案1】:
如果我对您的理解正确,您要问的是“为什么我需要实例变量,使用 getter 和 setter 方法来读取/修改这些变量,而我可以使用方法参数将数据传递给对象? "听起来对吗?
答案触及 OOP(面向对象编程)的核心。 OOP 的核心概念是创建不同的对象来表示离散的数据片段。例如,您可能想要跟踪某些人的姓名和年龄;在这种情况下,您将使用不同的对象来表示(并通过扩展,存储和管理关于)每个人的数据。
第 1 个人(“比尔”,52)
第 2 个人(“玛丽”,13 岁)
第 3 个人(“拉娜”,29 岁)
此模型中类的目的只是定义这些对象的规格(例如,“Person”由姓名和年龄组成)。
为什么这很有用?首先,这是一个非常直观的系统,因为您可以将您正在创建的对象视为真实的现实对象。其次,它使处理相关数据变得容易。例如,如果我们想将一个人的姓名与他们的年龄连接(连接成一个字符串),那么拥有一个代表每个人的对象就很容易了!只需逐个查看每个对象,然后使用 getter 访问每个实例的值。
要以非 OOP 方式执行此操作,我们需要一些其他方式来存储信息 - 可能作为姓名列表和单独的年龄列表。
姓名列表:[“比尔”、“玛丽”、“拉娜”]
年龄列表:[52、13、29]
在这种设置中,很难看出哪个名字与哪个年龄相关 - 他们唯一能将它们联系起来的是他们在列表中的位置。如果列表被排序,这些位置可能会改变!
因此,简而言之:对象实例是处理许多类似的离散数据集合的好方法。
至于为什么我们在处理这些实例时通常使用 getter 方法和 setter 方法,而不是直接公开属性,可以在 here 找到很好的解释。但值得一提的是,不同的语言处理这个问题的方式不同。例如,在 JavaScript 中,所有属性都可以直接访问。在 Ruby 中,它们都不是,您必须使用 setter 和 getter 来查看/修改对象实例变量。
我希望这能提供一些清晰的信息!