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

为什么不能覆盖仅限getter的属性并添加setter?

这个问题是关于JavaScript编程语言的。在JavaScript中,对象的属性有两种类型:数据属性和访问器属性。数据属性包括可配置(configurable)、可枚举(enumerable)、可写(writable)和值(value)。访问器属性包括可配置(configurable)、可枚举(enumerable)、获取器(getter)和设置器(setter)。

当一个属性被定义为仅具有getter,而没有setter时,意味着这个属性是不可写的。这通常是为了保护属性的值,确保它只能通过getter函数来获取,而不能被外部代码修改。这样可以确保属性的值始终满足某种特定的条件或者遵循某种约束。

如果试图为一个仅具有getter的属性添加setter,可能会导致代码的错误或异常行为。因为在添加setter时,属性的可写性将被改变,这可能会破坏属性的初始设计意图。

如果需要为一个仅具有getter的属性添加setter,可以考虑将属性的值存储在一个隐藏的内部变量中,然后通过getter和setter方法来访问和修改这个变量。这样可以确保属性的值仍然受到保护,同时允许外部代码通过setter来修改属性的值。

总之,不能覆盖仅限getter的属性并添加setter,是为了确保属性的完整性和一致性。如果需要修改属性的值,可以考虑通过其他方式来实现,例如使用隐藏的内部变量或者重新设计属性的访问方式。

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

相关·内容

Scala 学习笔记之类

gettersetter属性 2.1 Java gettersetter 在Java类中,我们并不喜欢使用公有字段: public class Person{ public int age...类有一个age属性. 2.2 Scala gettersetter 在Scala中对每个字段都提供了gettersetter方法: class Person{ var age = 0 } scala...只带getter属性 如果只想需要一个只读属性,有getter但没有setter属性值在对象构建完成之后就不再改变了,可以使用val字段: class Student { val age...Counter类只能访问当前对象value字段,而不能访问同样是Counter类型其他对象字段....Bean属性 Scala对于你定义字段提供了gettersetter方法,但是并不是Java工具所期望.JavaBeans规范把Java属性定义为一对getXXX/setXXX方法.很多Java工具都依赖这样命令习惯

41830

iOS_Extension、Category、load、initialize

(所以尽量不起同名方法,除非是故意想覆盖) ​ Category中声明属性,只会生成settergetter声明,不会实现settergetter和成员变量 如: // MOPerson+Fitness.h...Category有名字,Extension没有 Category声明属性,不会自动生成ivar、settergetter Extension可以添加实例变量,Category不可以 Extension...也就是说Extension声明方法必须依托对应类@implementation**部分实现。 2、为什么Category可以添加属性和方法,却不能添加成员变量?...具体过程可以看这篇文章:iOS底层原理总结 - Category本质 5、Category为什么只能加方法,而不能属性? ​...可以添加属性,只是系统不会自动为Category中属性实现settergetter方法;因为不能添加实例变量,所以需要通过runtime动态绑定方式,实现settergetter方法。

48500

java效率工具 Lombok

Java项目中,充斥着太多不友好代码:POJOgetter/setter/toStringm异常处理,I/O流关闭操作等等,这些样板代码既没有技术含量,又影响着代码美观,Lombok应运而生。...EclipseLombok插件安装可自行谷歌百度 项目中引入依赖 在自己项目里添加 lombok 编译支持,在 pom 文件里面添加以下代码 ...怎么用 主要注解 @Getter 生成成员变量getter方法 @Setter 生成成员变量getter方法 @NoArgsConstructor 生成无参构造器 @RequiredArgsConstructor...生成包含final和@NonNull注解成员变量构造器 @EqualsAndHashCode 生成覆盖默认equals和hashCode @ToString 生成覆盖默认toString()方法...生成全参构造器 @NonNull 作用于成员变量和参数中,标识不能为空,否则抛出空指针异常 @Cleanup 自动关闭资源 @SneakyThrows 检异常进行捕捉抛出 @Synchronized

48920

实战:应用对持久数据访问| 从开发角度看应用架构9

一、前言 本文仅代表作者个人观点; 本文内容仅限于技术探讨,不能作为指导生产环境素材; 本文素材是红帽公司产品技术和手册; 本文分为系列文章,将会有多篇,初步预计将会有16篇。...另外,应该通过使用gettersetter方法来访问每个实例变量。 最后,类必须至少有一个没有参数构造函数,尽管类仍然可以有其他构造函数接受参数。...基于属性访问--Property-based Access 为了提供基于属性访问,gettersetter方法必须在Java实体类中定义。...因为只能通过方法访问,可以说基于属性访问提供了更好封装。 通过注解getter方法提供基于属性访问。 getter方法返回类型决定了属性类型。...getter方法返回类型必须与传递给setter方法参数类型相同。 gettersetter方法必须是public或protected,并且必须遵循Java bean命名约定。

1.6K30

基础篇-ObjectC继承、类别、属性

1)新扩展方法与原方法同名,但是还需要使用父类实现。因为使用类别,会覆盖原类实现(继承也会覆盖,就是所谓重写,但是可以在重写时候调用  父类同名方法,而类别不能),无法访问到原来方法。...,但是当变量数量增多时,还采用手动添加setter/getter方法来操作变量,就会使得程序代码量大大增加,于是就出现了 @property 来快速声明设置获取变量方法,这也许就是  @property...只声明@property而不去实现,在Xcode4.4以后会自动帮你生成get和set方法 本质上来讲,属性也会帮你定义一个成员变量,根据属性声明自动生成getter/setter 方法,其中setter...@property是一个属性访问声明以及声明getter,setter方法, 扩号内支持以下几个属性:(getter=getterName,setter=setterName,设置settergetter...: 每次要为一个属性写上gettersetter,不得不手十分麻烦,所以有了更简单写法, 在.h文件里,直接这样写,表示声明了一个实例属性和它gettersetter器 @property int

1.7K10

LomBok

LomBok用到注解 image.png 标注在类上表示所有的非静态字段都会生成相应getter/setter方法 标注在字段上表示只为这个字段生成,且会覆盖标注在类上注解。...image.png 自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,为非final字 段添加@Setter,和@RequiredArgsConstructor...只提供getter方法,而不提供setter方法.它标注类和字段都会被声明为final image.png @Builder注解为类生成builder api以供调用。...就对第一步骤得到AST进行处理,找到@Data注解所在类对应>语法树(AST),然后修改该语法树(AST),增加gettersetter方法定义相应树节点 javac使用修改后抽象语法树(AST...)生成字节码文件,即给class增加新节点(代码块) 看起来有点像大学时候学编译原理,简单说就是编译时候,响应注解相当于一个标识,lombok程序会启动对之前源码种标识进行处理生成一些支撑代码

42120

为什么要用GetterSetter方法,而不是公开属性

大多数字段访问都是通过GetterSetter方法来间接访问,为什么不直接将字段设置为公开属性Public呢?答案在于前者未来可能性。...那么,下面属性name和value区别是什么呢? ? 慢慢地,我意识到了为什么我们使用GetterSetter,以及为什么它们是重要。...使用Public属性与通过GetterSetter公开它主要区别在于保持对该属性控制。如果你把一个字段公开,就意味着你可以直接访问调用方。然后,调用者可以做任何事情与你领域,无论是有意或无意。...我理解,但一般来说,我们不写任何东西在GetterSetter。我们只返回设置字段,就像公开字段一样。那你为什么要说这些?...为了回答这个问题,我说通过编写GetterSetter,我们创建了一个用于将来添加任何验证方法条款,目前,没有验证,但是如果将来出现任何错误,我们只是在Setter添加验证逻辑。

2.1K10

IDEA中用好Lombok,撸码效率至少提升5倍

来源:http://t.cn/EXhxRzV 以前Java项目中,充斥着太多不友好代码:POJOgetter/setter/toString;异常处理;I/O流关闭操作等等,这些样板代码既没有技术含量...注解使用 POJO类常用注解: @Getter/@Setter: 作用类上,生成所有成员变量getter/setter方法;作用于成员变量上,生成该成员变量getter/setter方法。...@Setter private boolean funny; } } 在Structure视图中,可以看到已经生成了getter/setter等方法: ?...@EqualsAndHashCode:作用于类,覆盖默认equals和hashCode @NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。 ?...有staticName、access等属性。 staticName属性一旦设定,将采用静态方法方式生成实例,access属性可以限定访问权限。

43160

IDEA 中用好 Lombok,撸码效率至少提升5倍

作 者:LiWenD 来 源:http://t.cn/EXhxRzV 以前Java项目中,充斥着太多不友好代码:POJOgetter/setter/toString;异常处理;I/O流关闭操作等等...注解使用 POJO类常用注解: @Getter/@Setter: 作用类上,生成所有成员变量getter/setter方法;作用于成员变量上,生成该成员变量getter/setter方法。...@Setter private boolean funny; } } 在Structure视图中,可以看到已经生成了getter/setter等方法: ?...@EqualsAndHashCode:作用于类,覆盖默认equals和hashCode @NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。 ?...有staticName、access等属性。 staticName属性一旦设定,将采用静态方法方式生成实例,access属性可以限定访问权限。

43020

如何用好 IDEA ,Java 撸码效率至少提升 5 倍?

包 2)添加IDE工具对Lombok支持 3)Lombok实现原理 4) Lombok注解使用 ---- 以前Java项目中,充斥着太多不友好代码:POJOgetter/setter/toString...注解使用 POJO类常用注解: @Getter/@Setter: 作用类上,生成所有成员变量getter/setter方法;作用于成员变量上,生成该成员变量getter/setter方法。...img @EqualsAndHashCode:作用于类,覆盖默认equals和hashCode @NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。 ?...有staticName、access等属性。 staticName属性一旦设定,将采用静态方法方式生成实例,access属性可以限定访问权限。...@SneakyThrows:可以对受检异常进行捕捉抛出,可以改写上述main方法如下: ?

52610

IDEA中用好Lombok,撸码效率至少提升5倍

以前Java项目中,充斥着太多不友好代码:POJOgetter/setter/toString;异常处理;I/O流关闭操作等等,这些样板代码既没有技术含量,又影响着代码美观,Lombok应运而生...注解使用 POJO类常用注解: @Getter/@Setter: 作用类上,生成所有成员变量getter/setter方法;作用于成员变量上,生成该成员变量getter/setter方法。...@EqualsAndHashCode:作用于类,覆盖默认equals和hashCode @NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。 ?...有staticName、access等属性。 staticName属性一旦设定,将采用静态方法方式生成实例,access属性可以限定访问权限。...@SneakyThrows:可以对受检异常进行捕捉抛出,可以改写上述main方法如下: ?

56830

Java效率工具Lombok使用及原理

在过往Java项目中,充斥着太多不友好代码:POJOgetter/setter/toString;异常处理;I/O流关闭操作等等,这些样板代码既没有技术含量,又影响着代码美观,Lombok应运而生...注解使用: POJO类常用注解: @Getter/@Setter: 作用类上,生成所有成员变量getter/setter方法;作用于成员变量上,生成该成员变量getter/setter方法。...@EqualsAndHashCode:作用于类,覆盖默认equals和hashCode @NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。 ?...有staticName、access等属性。 staticName属性一旦设定,将采用静态方法方式生成实例,access属性可以限定访问权限。...@SneakyThrows:可以对受检异常进行捕捉抛出,可以改写上述main方法如下: ?

52910

原来IDEA还有这么骚包插件!!!

在过往Java项目中,充斥着太多不友好代码:POJOgetter/setter/toString;异常处理;I/O流关闭操作等等,这些样板代码既没有技术含量,又影响着代码美观,Lombok应运而生...注解使用: POJO类常用注解: @Getter/@Setter: 作用类上,生成所有成员变量getter/setter方法;作用于成员变量上,生成该成员变量getter/setter方法。...@EqualsAndHashCode:作用于类,覆盖默认equals和hashCode @NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。 ?...有staticName、access等属性。 staticName属性一旦设定,将采用静态方法方式生成实例,access属性可以限定访问权限。...@SneakyThrows:可以对受检异常进行捕捉抛出,可以改写上述main方法如下: ?

76620

Objective-C属性(property)特性(attribute)

->name); 为什么gettersetter 那么,为什么还要如此麻烦地声明和实现settergetter呢?...主要基于三个原因(参考:Please explain Getter and Setters in Objective C): 可以在gettersetter添加额外代码,实现特定目的。...它帮我们自动生成gettersetter(声明方法,实现方法。当然,这部分代码并不会出现在你项目中,是隐藏起来)。...这样对比,atomic就显得比较鸡肋了,因为它并不能完全保证程序层面的线程安全,又有额外性能耗费(要对gettersetter进行加锁操作,我验证过,在某个小项目中将所有的nonatomic删除,内存占用平均升高...存取方法不能以new开头,如果你要以new开头命名一个属性:@property (copy, nonatomic) NSString *newName;于是会默认生成一个new开头getter方法

1.9K30

原来IDEA还有这么骚包插件!!!

在过往Java项目中,充斥着太多不友好代码:POJOgetter/setter/toString;异常处理;I/O流关闭操作等等,这些样板代码既没有技术含量,又影响着代码美观,Lombok应运而生...注解使用: POJO类常用注解: @Getter/@Setter: 作用类上,生成所有成员变量getter/setter方法;作用于成员变量上,生成该成员变量getter/setter方法。...@Setter private boolean funny; } } 在Structure视图中,可以看到已经生成了getter/setter等方法: ?...@EqualsAndHashCode:作用于类,覆盖默认equals和hashCode @NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。 ?...有staticName、access等属性。 staticName属性一旦设定,将采用静态方法方式生成实例,access属性可以限定访问权限。

1.2K40

全面梳理JS对象访问控制及代理反射

,且并不会返回值 一些 getter/setter 常识: 也被称为存取方法,是访问方法(access methods)中最常用两个 用来封装私有成员方法,以隔离外界对其直接访问 也可以在存取过程中添加其他逻辑...在同一个对象中,不能为一个已有真实值变量使用 set ,也不能为一个属性设置多个 set ?...并且在一般情况下,通过赋值来为对象添加属性,可以由 for...in 或 Object.keys 方法遍历枚举出来;且通过这种方式添加属性值可以被改变,也可以被删除。...,利用 IE 支持 onpropertychange 事件,也是可以模拟 getter/setter 要注意这种方法仅限于已加载到文档中 DOM 对象 function addProperty(...总结 getter/setter 也被称为存取方法,是访问方法中最常用两个 可以用访问方法封装保护原对象,保留逻辑灵活性 ES5 中开始支持了隐式 get 和 set 访问方法,可以通过 delete

2.2K30

IDEA中用好Lombok,撸码效率至少提升5倍

作者丨LiWenD juejin.im/post/5b00517cf265da0ba0636d4b 以前Java项目中,充斥着太多不友好代码:POJOgetter/setter/toString;...注解使用 POJO类常用注解: @Getter/@Setter: 作用类上,生成所有成员变量getter/setter方法;作用于成员变量上,生成该成员变量getter/setter方法。...@EqualsAndHashCode:作用于类,覆盖默认equals和hashCode @NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。 ?...有staticName、access等属性。 staticName属性一旦设定,将采用静态方法方式生成实例,access属性可以限定访问权限。...@SneakyThrows:可以对受检异常进行捕捉抛出,可以改写上述main方法如下: ?

67730

Java 效率工具之 Lombok

在过往Java项目中,充斥着太多不友好代码:POJOgetter/setter/toString;异常处理;I/O流关闭操作等等,这些样板代码既没有技术含量,又影响着代码美观,Lombok应运而生...注解使用: POJO类常用注解: @Getter/@Setter: 作用类上,生成所有成员变量getter/setter方法;作用于成员变量上,生成该成员变量getter/setter方法。...@Setter private boolean funny; } } 在Structure视图中,可以看到已经生成了getter/setter等方法: ?...@EqualsAndHashCode作用于类,覆盖默认equals和hashCode @NonNull主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。 ?...有staticName、access等属性。 staticName属性一旦设定,将采用静态方法方式生成实例,access属性可以限定访问权限。

64020
领券