首页
学习
活动
专区
工具
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 学习笔记之类

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

43830
  • iOS_Extension、Category、load、initialize

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

    53900

    java效率工具 Lombok

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

    50920

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

    一、前言 本文仅代表作者的个人观点; 本文的内容仅限于技术探讨,不能作为指导生产环境的素材; 本文素材是红帽公司产品技术和手册; 本文分为系列文章,将会有多篇,初步预计将会有16篇。...另外,应该通过使用getter和setter方法来访问每个实例变量。 最后,类必须至少有一个没有参数的构造函数,尽管类仍然可以有其他构造函数接受参数。...基于属性的访问--Property-based Access 为了提供基于属性的访问,getter和setter方法必须在Java实体类中定义。...因为只能通过方法访问,可以说基于属性的访问提供了更好的封装。 通过注解getter方法提供基于属性的访问。 getter方法的返回类型决定了属性的类型。...getter方法的返回类型必须与传递给setter方法的参数的类型相同。 getter和setter方法必须是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,设置setter与getter...: 每次要为一个属性写上getter和setter,不得不手十分麻烦,所以有了更简单的写法, 在.h文件里,直接这样写,表示声明了一个实例属性和它的getter和setter器 @property int

    1.9K10

    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),增加getter和setter方法定义的相应树节点 javac使用修改后的抽象语法树(AST...)生成字节码文件,即给class增加新的节点(代码块) 看起来有点像大学时候学的编译原理,简单说就是编译时候,响应的注解相当于一个标识,lombok程序会启动并对之前的源码种的标识进行处理生成一些支撑代码

    44120

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

    来源:http://t.cn/EXhxRzV 以前的Java项目中,充斥着太多不友好的代码:POJO的getter/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属性可以限定访问权限。

    44360

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

    作 者:LiWenD 来 源:http://t.cn/EXhxRzV 以前的Java项目中,充斥着太多不友好的代码:POJO的getter/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属性可以限定访问权限。

    44420

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

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

    55010

    为什么要用Getter和Setter方法,而不是公开属性

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

    2.2K10

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

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

    58630

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

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

    2K30

    Java效率工具Lombok使用及原理

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

    56510

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

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

    78120

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

    在过往的Java项目中,充斥着太多不友好的代码:POJO的getter/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.3K40

    全面梳理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

    Java 效率工具之 Lombok

    在过往的Java项目中,充斥着太多不友好的代码:POJO的getter/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属性可以限定访问权限。

    66020

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

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

    69330
    领券