首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么有空的get set属性而不是使用公共成员变量?

在面向对象编程中,我们通常使用私有成员变量和公共成员函数来实现封装和隐藏实现细节。这样可以确保数据的安全性和一致性,同时也方便进行代码的维护和扩展。

在这种情况下,我们通常会使用 get 和 set 方法来访问和修改私有成员变量的值。这样做的好处是可以在访问或修改数据时进行一些额外的操作,例如数据验证、数据转换等。这些操作在公共成员变量中是无法实现的。

此外,使用 get 和 set 方法还可以更好地实现代码的可维护性和可扩展性。例如,如果需要更改数据的表示方式或者添加一些额外的逻辑,只需要修改 get 和 set 方法即可,而不需要修改所有使用该成员变量的地方。

总之,使用 get 和 set 方法而不是公共成员变量的原因是为了实现数据的封装和安全性,以及方便代码的维护和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

封装概述和好处(入门)

//get方法获取成员变量 System.out.println(s.getName() + s.getAge()); } } 我们可以看到在上面的案例中,成员变量使用...private修饰,下面的getset方法均使用了public修饰,其实被private修饰属性就是我们想要锁起来数据,setget方法就是我们打开这把锁钥匙 被private所修饰内容是...setget方法外界所能访问,而这两个方法又可以直接访问我们私有成员变量,所以setget方法就成为了私有成员与外界沟通钥匙。...s.setName("BWH_Steven"); s.setAge(20); } } 我们用private来修饰我们成员变量不是没有任何依据,如果我们成员变量修饰符改为...所以在Student类中提供一个方法来对数据进行校验 但是如果偏偏不调用方法来赋值,还是直接赋值,这样我们方法就没有起作用 所以我们必须强制要求使用方法,不能直接调用成员变量 这也正是我们使用private

1.8K30

深入理解 Java 修饰符与封装:访问权限、行为控制与数据隐藏

为了实现这一点,你需要: 将类变量/属性声明为私有 提供公共 getset 方法以访问和更新私有变量GetSet 方法 私有变量只能在同一类中访问(外部类无法访问)。...但是,如果我们提供了公共 getset 方法,就可以访问它们。 get 方法 返回变量值, set 方法 设置值。...更好地控制类属性和方法 类属性可以被设置为只读(如果仅使用 get 方法)或只写(如果仅使用 set 方法) 灵活性:程序员可以更改代码一部分不影响其他部分 数据安全性增加 封装优点: 提高安全性...一些额外说明: 可以使用多个修饰符来修饰 getset 方法,例如 public、protected 和 private。 可以使用 final 修饰符来声明常量,常量不能被修改。...可以使用 static 修饰符来声明静态方法和变量,静态方法和变量属于类,不是对象。 最后 看完如果觉得有帮助,欢迎 点赞、收藏、关注

14600

MFC中注释含义

当查看 MFC 头文件时,您会发现每个类都可能具有上述每种关键字几个。例如,公共成员变量和函数可能在多个 public 关键字之下。...这是因为 MFC 基于成员变量和函数使用而非允许访问类型来分隔它们。MFC 对 private 使用很保守;即使是被视为实现详细信息项通常都受保护,但很多时候它们是公共。...// Attributes属性,特性,特质 MFC 类声明中 // Attributes 节包含对象公共特性(或属性)。这些特性或属性通常是成员变量或 Get/Set 函数。...“Get”和“Set”函数可以是虚拟,也可以不是虚拟。“Get”函数一般为 const,因为大多数情况下它们都没有副作用。这些成员通常是公共;受保护属性和私有属性通常在实现节中。...这些函数一般是非 const ,因为它们通常有副作用。它们可以是虚拟,也可以不是虚拟,具体取决于类需要。这些成员通常是公共

1.1K70

【Java面向对象编程(中)】- 探索封装秘密

回顾 上次我们学习了Java 面向对象编程 类,方法及属性 以及Java中静态成员方法和变量,实例成员方法和变量使用 若有遗忘点击http://t.csdnimg.cn/xp3Ls 今天我们学习Java...如果一个类属性或方法被private修饰以后,只能在类里面被使用 为什么进行封装 ​ ​ 如果name是共有的不进行封装,实现者若改了属性name名字,调用者完全不知道实现者改了属性,所以我们才要进行封装...如何调用私有的变量 ​ ​ 如果调用者想要调用实现者私有变量,可以通过getset方法,或者get + set + this进行私有变量调用 this写在哪个类里面,就表示哪个类对象引用 若方法变成...private,那么这个方法也只能在当前类里面使用 1.get + set方法(当形参和成员变量不同名时) /** * */ package Test; /** * * 封装: 用 private...+ set + this(形参名不小心与成员变量名相同时) this 引用指向当前对象 ( 成员方法运行时调用该成员方法对象 ) ,在成员方法中所有成员变量操作,都是通过该 引用去访问 。

9710

如何讲清楚 Java 面向对象问题与知识?(类与对象,封装,继承,多态,接口,内部类...)

1.3.1 为什么局部变量存在于栈中不是堆中 1.4 访问权限修饰符 public、private、protected, 以及不写(默认)时区别 1.5 类在初始化时候做了些什么?...1.3.1 为什么局部变量存在于栈中不是堆中 有一个问题,在我们学习 Java 中内存分配时候,有这样一句话,“堆内存用来存放 new 创建对象和数组”。...修饰,下面的 getset 方法均使用了public修饰,其实被private修饰属性就是我们想要锁起来数据, setget 方法就是我们打开这把锁钥匙 被private所修饰内容是...setget 方法外界所能访问,而这两个方法又可以直接访问我们私有成员变量,所以 setget 方法就成为了私有成员与外界沟通钥匙。...原因是,当我们使用final修饰变量后,堆内存直接存储是值,不是变量名。

1.1K10

抽象类 VS 接口

接口中不能包含任何被实现成员,即接口中只能包含成员签名。如,没有方法体方法、只包含访问器关键字(setget属性等。和抽象类类似,接口也是一份合约。...比较异同 特征 接口 抽象类 是否支持多继承 支持 不支持 默认实现 接口中不能包含任何已实现成员 抽象类中可以包含已实现(非抽象)成员 访问修饰符 接口成员默认是公共(public),不再允许被任何访问修饰符修饰...,建议使用接口 如果子类属于同一类型,且具有相同行为或状态,建议使用抽象类提供约束 寻找成员速度 相比抽象类较慢 相比接口更快 成员变动影响 如果接口成员发生改动,则所有实现类都要进行改动 若向抽象类中添加非抽象成员...,我们可以给该成员提供默认实现,这样子类就无需发生变动 允许包含抽象成员 属性、方法、事件、索引器(这四类本质上都是方法) 属性、方法、事件、索引器 是否允许定义字段 不允许 不允许定义使用abstract...抽象类是对相同类型(不是数据类型)子类公共部分抽象(约束),接口是对能力一种约束。 此外,建议大家读一读文末给出这篇文章,本人读完收益颇多,本文中表格部分引自该文。

41830

C++CLI(一)-C++CLI简介

public前缀表明了类型在它父类程序集之外可见——即可访问(只有两种类型可见性,public和private,类型默认为private),另外,只有类型才能有可见性属性,非成员函数、全局变量及文件范围内...作为成员标量属性,也对实例提供了类似字段访问性,在标记3(a)中,用int类型定义了一个X属性,property符号是一个上下文关键字,不是一个全局保留关键字,它用法只限于在这个上下文中。...]对于getset存取程序,在一个属性中即可有任意一个,也可两者兼有。在标记3(b)中,get返回既定属性值;而在标记3(c)中,set使用编程者提供值来设置即定属性值。...这两个存取程序分别以名字getset定义为单独函数,必须接受或返回相应声明类型值,在本例中,为int(注意,这两个名字不是关键字)。...有经验C++类设计人员可能会留意到,在这个类定义中,缺乏了两个重要东西:函数未const限定;且参数不是作为一个const句柄传递为什么会这样呢?

2.9K30

猿进化系列5——看了这个,你就会搞对象了

属性就是成员变量,方法中变量,和语句体中变量就是局部变量!...5.使用构造方法可以省略set方法调用,但是如果需要传递参数比较多,需要相当注意了,不是很推荐使用。 ? 什么是JavaBean?...JavaBean 是 编写java类一种编码规范,类必须是具体公共,并且具有无参数构造方法,并且提供setget方法来访问类成员变量get set方法最好还要满足小驼峰命名方式。...我们希望把公共部分抽取出来,大家都去使用,就简单多了。 ? 一个子类继承了父类,子类就会继承父类所有非私有属性成员变量)和方法。...setAge方法 和getAge方法是子类还是父类? 答案是子类。当子类属性和方法和父类同名时,都是优先使用子类属性和方法。在这种情况下,那父类非私有属性和方法是不是不能访问了?

36720

.NET面试题解析(05)-常量、字段、属性、特性与委托

字段与属性有什么异同? 4. 静态成员和非静态成员区别? 5. 自动属性有什么风险? 6. 特性是什么?如何使用? 7. 下面的代码输出什么结果?为什么?...属性本质 属性是面向对象编程基本概念,提供了对私有字段访问封装,在C#中以getset访问器方法实现对可读可写属性操作,提供了安全和灵活数据访问封装。...在定义属性时,我们可以自定义一个私有字段,也可以使用自动属性“{ get; set; } ”简化语法形式。 使用自动属性时需要注意一点是,私有字段是由编译器自动命名,是不受开发人员控制。...属性提供了更为强大,灵活功能来操作字段 出于面向对象封装性,字段一般不设计为Public 属性允许在setget中编写代码 属性允许控制setget可访问性,从而提供只读或者可读写功能...因为闭包中共享变量i会被提升为委托对象公共字段,生命周期延长了 8. C#中委托是什么?事件是不是一种委托? 什么是委托?

1K20

.NET面试题解析(05)-常量、字段、属性、特性与委托

字段与属性有什么异同? 4. 静态成员和非静态成员区别? 5. 自动属性有什么风险? 6. 特性是什么?如何使用? 7. 下面的代码输出什么结果?为什么?...在定义属性时,我们可以自定义一个私有字段,也可以使用自动属性“{ getset; } ”简化语法形式。 使用自动属性时需要注意一点是,私有字段是由编译器自动命名,是不受开发人员控制。...属性提供了更为强大,灵活功能来操作字段 出于面向对象封装性,字段一般不设计为Public 属性允许在setget中编写代码 属性允许控制setget可访问性,从而提供只读或者可读写功能 (...静态函数实现里不能使用非静态成员,如非静态变量、非静态函数等。 5. 自动属性有什么风险? 因为自动属性私有字段是由编译器命名,后期不宜随意修改,比如在序列化中会导致字段值丢失。 6....因为闭包中共享变量i会被提升为委托对象公共字段,生命周期延长了 8. C#中委托是什么?事件是不是一种委托? 什么是委托?

81610

面向对象三大特征-封装

1.3、封装步骤 private修饰成员变量 对需要访问成员变量,提供对应一对get/set方法 1.4、案例 **需求:**编写一个类中得到生日方法 分析: ① 类成员变量可以成为只读或者只写...2.2、公共方法访问 对每个值属性提供对外公共方法访问,也就是创建一对赋值取值方法,用于对私有属性访问。...,那么除了Person这个类以外其他地方都不能使用他,所有这个时候,我们选择了全局set,get方法,来为我们属性name,age来存放值和取值。...name,age时候,使用了,setget方法,那么这就是一个典型封装。...符合 JavaBean 类,要求类必须是具体公共,并且具有无参数构造方法,提供用来操作成员变量 setget 方法。

49020

编写高效Android代码

尽可能避免使用内在GetSet方法 像C++iyangde编程语言,通常会使用Get方法(例如i = getCount() )去取代直接访问这个属性(i=mCount )。...虚方法调用会产生很多代价,比实例属性查询代价还要多。我们应该在外部调用时使用GetSet函数,但是在内部调用时,我们应该直接调用。...,把mScrollBar 缓冲到一个堆栈变量之中,四次成员属性调用就会变成四次堆栈访问,这样就会提高效率。...,这就意味着你不是直接访问类成员,而是通过公共方法来访问。...前面我们谈过间接访问要比直接访问慢,因此这是一个按语言习惯无形执行例子。 让拥有包空间内联类直接声明需要访问属性和方法,我们就可以避免这个问题,哲理诗是包空间不是有空间。

59430

一起学Excel专业开发22:使用类模块创建对象1

使用枚举成员可以增强代码可读性和可维护性,利用DescriptiveCellType属性可将枚举成员值转换成易于理解文本。 类模块定义了对象属性和方法。...在类模块中,所有的公共变量属性过程都可作为对象属性,所有的公有过程或函数均可作为对象方法。...属性过程用于控制变量与外界交互,有3种形式: 1.直接对属性赋值 2.使用Set语句为属性赋值对象 3.使用Get语句返回值或对象引用 在CCell类模块中,使用了2个私有的模块级变量来存储属性值:变量...在CCell类模块中,使用Set语句给Cell属性指定一个Range型引用并将其保存到变量mrngCell中。...使用Get语句读取属性值,其中CellType属性以枚举成员值返回所代表单元格类型,DescriptiveCellType属性以描述性文本返回所代表单元格类型,因为这两个属性没有对应Set方法,

94520

C++都有对象了,你还没有吗?

金句分享: ✨应该有更好方式开始新一天,不是千篇一律每天醒来.✨ 一、面向过程与面向对象 C语言作为一种面向过程编程语言,注重解决问题过程和步骤,通过函数和控制流程设计来组织程序。...类体中内容称为类成员:可以包含属性成员变量)和操作/方法(成员函数)。 2.2 类定义方式 使用class关键字可以创建一个新类,并定义它特征(如数据成员成员函数)。...通过使用成员函数和成员变量,我们可以对对象进行操作和访问其属性,从而使类具有更多功能和灵活性。...访问限定符选择取决于设计需求和封装原则。公共成员允许类用户直接访问,私有成员则隐藏了实现细节并提供了更好封装。受保护成员专门用于派生类访问,并且在类外部不可见。...那就要说到类设计方式了,因为成员函数消耗内存相对都比较大,每个对象都是使用同一个成员函数,如果每个对象都给成员函数开辟空间,这就比较浪费了,所以C++中类采用下图这种方式存储: 将;类成员函数放在公共代码段

17020

UML类图

2、特性,字段和属性   3、操作,方法,+是公共(Publish)、-是私有(Private)、#是保护(Protected) ?...关联(Association)   描述:拥有的关系,类A知道类B属性和方法   图形表示:箭头+实线,指向被关联类   代码表现:成员变量 public class 企鹅 { public...聚合(Aggregation) 描述:弱拥有关系,整体和部分关系,体现是A对象,但B对象不是A对象一部分,也就是B对象能脱离对象A单独存在 图形表示:空心菱形+实线+箭头,箭头指向部分 代码表现...:成员变量(数组) public class 雁群 { public virtual IEnumerable 大雁 { get; set;...依赖(Dependency) 描述:是一种使用关系,即一个类实现需要另一个类协助,所以要尽量不使用双向互相依赖,不然会造成死循环 图形表示:虚线+箭头,箭头指向被使用者 代码表现:局部变量、方法参数或者对静态方法调用

1K41

Java编程基础阶段笔记 day 07 面向对象编程(上)

不能使用权限修饰符修饰 ②成员变量:可以使用四种权限修饰符(public protected 缺省(default) private) 内存: ①局部变量:在内存栈中 ②成员变量:在内存堆(对象...我们采取取如下方式 ①使用权限修饰符对属性进行权限限制,那么在类外部就不能随意再调用类中属性 ②提供公共方法,在方法中可以加以限制其它条件。然后可以通过该方法给属性赋值和获取属性值。...封装性体现(狭义上): ①将属性私有化。(private修饰属性) ②提供公共set/get方法。...(set方法用来给属性赋值,get方法用来获取属性值) 封装性体现(广义上): ①可以使用四种权限修饰符:private,缺省,protected,public ②四种权限修饰符可以修饰 :属性,...② - ③ - ④ JavaBean:Java语言编写可重用组件 定义:是一个普通Java类,但是符合如下标准 ①类是公共 ②有一个无参公共构造器 ③有属性,且有对应getset方法

53100

TypeScript 官方手册翻译计划【十二】:类

// 下面这句是在试图修改第一行 x,不是属性 x = "world"; ^ // Type 'string' is not assignable to type 'number...如果在执行 get/set 操作时候不需要添加额外逻辑,那么只需要将字段暴露为公共字段即可。...对于访问器,TypeScript 有一些特殊推断规则: 如果 get 存在 set 不存在,那么属性会自动成为只读属性 如果没有指定 setter 参数类型,那么会基于 getter 返回值类型去推断参数类型...箭头函数 如果你函数在被调用时候经常会丢失 this 上下文,那么最好使用箭头函数属性不是方法定义: class MyClass { name = 'MyClass'; getName...将 set 返回值类型推断为 this,不是 Box。

2.5K10
领券