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

成员名称不能与其封闭类型相同

是指在编程语言中,一个类或结构体的成员变量或成员函数的名称不能与该类或结构体的名称相同。

这个规则的目的是为了避免混淆和歧义,确保代码的可读性和可维护性。如果允许成员名称与封闭类型相同,那么在使用成员时就无法明确是调用成员还是引用封闭类型本身。

举个例子,假设有一个名为Person的类,如果允许在Person类中定义一个与类名相同的成员变量或成员函数,就会导致代码的可读性下降。例如:

代码语言:python
代码运行次数:0
复制
class Person:
    def Person(self):  # 错误的定义,成员名称与封闭类型相同
        self.Person = "John"  # 错误的定义,成员名称与封闭类型相同

为了避免这种情况,应该遵循命名规范,将成员名称与封闭类型区分开来。例如:

代码语言:python
代码运行次数:0
复制
class Person:
    def __init__(self, name):
        self.name = name  # 正确的定义,成员名称与封闭类型不同

    def say_hello(self):
        print("Hello, my name is", self.name)  # 正确的定义,成员名称与封闭类型不同

在云计算领域中,这个规则同样适用于各种编程语言和框架。无论是前端开发、后端开发还是其他领域的开发工作,都应该遵循这个规则,以提高代码的可读性和可维护性。

腾讯云相关产品和产品介绍链接地址:

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

相关·内容

Oracle Java类和对象

在代码示例中,draw(Strings)和draw(inti)是截然不同的方法,因为它们需要不同的参数类型不能声明多个具有相同名称相同数量和类型的参数的方法,因为编译器无法区分它们。...内部类 与实例方法和变量一样,内部类与其封闭类的实例相关联,并可以直接访问该对象的方法和字段。此外,因为内部类与实例相关联,所以它本身不能定义任何静态成员。 作为内部类实例的对象存在于外部类的实例中。...阴影 如果特定作用域(如内部类或方法定义)中的类型声明(如成员变量或参数名称)与封闭作用域中的另一声明具有相同名称,则该声明将隐藏封闭作用域的声明。不能仅通过其名称引用阴影声明。...匿名类不能访问其封闭范围中未声明为final或有效final的局部变量。 与嵌套类一样,匿名类中的类型(例如变量)声明隐藏了封闭范围中具有相同名称的任何其他声明。有关详细信息,请参见阴影。...这意味着它们不会从父类型继承任何名称,也不会引入新的作用域级别。lambda表达式中的声明的解释与它们在封闭环境中的解释相同

86100

Java 中文官方教程 2022 版(三)

内部类 与实例方法和变量一样,内部类与其封闭类的实例相关联,并且可以直接访问该对象的方法和字段。此外,因为内部类与实例相关联,它本身不能定义任何静态成员。 作为内部类的实例存在于外部类的实例内部。...遮蔽 如果特定范围(如内部类或方法定义)中的类型声明(如成员变量或参数名)与封闭范围中的另一个声明具有相同名称,则声明会遮蔽封闭范围的声明。您不能仅通过名称引用被遮蔽的声明。...遮蔽和局部类 在局部类中声明的类型(如变量)会遮蔽在外部作用域中具有相同名称的声明。更多信息请参见 Shadowing。 局部类类似于内部类 局部类类似于内部类,因为它们不能定义或声明任何静态成员。...局部类是非静态的,因为它们可以访问封闭块的实例成员。因此,它们不能包含大多数类型的静态声明。 你不能在块内部声明接口;接口本质上是静态的。...匿名类无法访问其封闭范围中未声明为final或有效final的本地变量。 像嵌套类一样,在匿名类中声明类型(如变量)会遮蔽封闭范围中具有相同名称的任何其他声明。有关更多信息,请参阅遮蔽。

28500
  • MongoDB(4)- Collection 集合相关

    MongoDB 集合的命名规则 集合名称要求符合 UTF-8 标准的字符串 序号 注意事项 1 集合名不能是空串,如"" 2 不能含有空字符 null 3 不能以 system....collections 创建集合 MongoDB 集合的创建有显式和隐式两种方法 显示创建 使用 db.createCollection(name, options) 方法来实现 name:创建的集合名称...描述 capped Boolean (可选)如果为 true,则启用封闭的集合。...即单个集合中的不同文档不需要具有相同的字段集 并且一个字段的数据类型可以在集合内的文档中不同 总结: Bson 数据结构、字段都不需要必须一致 从 MongoDB 3.2 开始,可以在 update...UUID 集合 UUID 在副本集的所有成员和分片集群中的分片保持不变 查看集合的 uuid > db.getCollectionInfos() [ { "name" : "

    78510

    转向Kotlin——对象

    与上面代码相同功能,下面是Kotlin代码: object JClassTest { fun process(jClass: JClass) { jClass....如果将匿名对象用于public函数的返回值,或者public属性的类型,那么Kotlin编译器会将这些函数或属性的返回类型重新定义为匿名对象的夫类型,如果匿名对象没有继承任何类,也没有实现任何接口,那么父类型就是...在Java中,匿名对象访问封闭作用域内的变量,需要用final声明该变量,这也就意味着在匿名对象中无法修改封闭作用域内变量的值。...在Java8中,如果只是使用封闭作用域内的变量,该比那辆无需使用final,但一旦修改变量的值,就必须使用final进行修饰,其实在Java8中,,封闭作用域的变量是一个隐式的final变量。...,但并不等于不能实现类似于静态类成员的功能。

    73430

    C Sharp(十二)

    我们可以额外增加一层抽象,这样类型就不用再硬编码了,这样就可以使得多段代码在不同类型执行相同的指令成为可能。...我们可以使用类型占位符书写代码,在创建实例时指明实际类型即可。 C# 提供了 5 种泛型可用在的地方: 类、结构、接口、委托、方法。前四种是类型,最后一种是成员。...,泛型方法是成员而不是类型,它可以用于泛型、非泛型类、结构或接口。...泛型方法有两个参数列表: 封闭在圆括号内的方法参数列表 封闭在尖括号内的类型参数列表 要声明泛型方法: 在方法名之后,方法参数之前放置类型参数列表 在方法参数之后放置可选的约束子句 public void...PieceOfData(10); Console.WriteLine($"{intData.Data}"); } } 泛型委托 泛型委托与非泛型委托类似,要声明泛型委托,需要在委托名称之后

    83520

    Python6大设计原则

    内容总览 六大设计原则都有哪些 一、单一职责原则 二、里氏替换原则 三、依赖倒置原则 四、接口隔离原则 五、迪米特法则 六、开放封闭原则 内容详解 一、单一职责原则 单一职责原则:英文名称是Single...父类的一个方法的返回值是一个类型T,子类的相同方法(重载或覆写)的返回值为S,那么里氏替换原则就要求S必须小于等于T,也就是说,要么S和T是同一个类型,要么S是T的子类。...每个对象都必然会与其他对象有耦合关系,两个对象之间的耦合就成为朋友关系,这种关系的类型有很多,例如组合、聚合、依赖等。...朋友类的定义:出现在成员变量、方法的输入输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类。...注意:一个类只和朋友交流,不与陌生类交流,不要出现getA().getB().getC().getD()这种情况(在一种极端的情况下允许出现这种访问,即每一个点后面返回类型相同),类与类之间的关系是建立在类间的

    34230

    静态方法 普通方法 和 构造方法三者的区别

    在静态方法中不能使用 this 关键字引用当前对象,也不能访问非静态成员(非静态变量和非静态方法),只能访问静态成员(静态变量和静态方法)。静态方法通常用于工具类、辅助方法或者独立的功能函数。...普通方法可以使用 this 关键字引用当前对象,可以访问所有类的成员,包括静态成员和实例成员。普通方法通常用于操作和访问对象的状态,进行实例变量的操作和与其他对象的交互。...构造方法的名称与类名相同,没有返回类型声明,不能被显式调用,而是在创建对象时由 new 关键字自动调用。构造方法可以有多个重载形式,可以接受参数来初始化对象的状态。...静态方法只能访问静态成员(静态变量和静态方法),不能使用 this 关键字;普通方法可以访问所有类的成员,包括静态成员和实例成员,可以使用 this 关键字。...构造方法是特殊的方法,用于创建和初始化对象,没有返回类型声明,通过 new 关键字在创建对象时自动调用。

    19010

    6大设计原则总结

    6大设计原则总结 一、单一职责原则  单一职责原则:英文名称是Single Responsiblity Principle,简称是SRP。定义:应该有且仅有一个原因引起类的变更。...父类的一个方法的返回值是一个类型T,子类的相同方法(重载或覆写)的返回值为S,那么里氏替换原则就要求S必须小于等于T,也就是说,要么S和T是同一个类型,要么S是T的子类。...每个对象都必然会与其他对象有耦合关系,两个对象之间的耦合就成为朋友关系,这种关系的类型有很多,例如组合、聚合、依赖等。...朋友类的定义:出现在成员变量、方法的输入输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类。...注意:一个类只和朋友交流,不与陌生类交流,不要出现getA().getB().getC().getD()这种情况(在一种极端的情况下允许出现这种访问,即每一个点后面返回类型相同),类与类之间的关系是建立在类间的

    78490

    设计模式—–开放封闭原则

    开放封闭原则 在面向对象的设计中有很多流行的思想,比如说 "所有的成员变量都应该设置为私有(Private)","要避免使用全局变量(Global Variables)","使用运行时类型识别(RTTI...它们 "面向修改封闭(Closed For Modification)"。 模块的源代码是不能被侵犯的,任何人都不允许修改已有源代码。...一个不能被修改的模块通常被认为其拥有着固定的行为。那么如何使这两个相反的特性共存呢? 抽象是关键。 Abstraction is the Key....图 2 中展示了符合开放封闭原则的相应设计。 ? 在这个示例中,AbstractServer 类是一个抽象类,并包含一个纯虚成员函数。...这里仍然无法对多种 Shape 的顺序保持封闭的就是表(Table)本身。但我们可以将这个表定义放置在单独的模块中,使表与其他模块隔离,这样对表的更改则不再会对任何其他模块产生影响。

    86810

    读书笔记 | 类的使用 | Effective Java 3

    除非变量是 final,或是数组形式(不受编译器控制) 如果内部类的名称和外面能访问的名称相同,则会把名称覆盖掉。...可以访问其外部类的成员 不能访问该方法的局部变量,除非是 final 局部变量。...非静态成员类的每个实例都隐含地与其包含的类的宿主实例相关联。 在非静态成员类的实例方法中,可以调用宿主实例上的方法,或者使用限定的构造获得对宿主实例的引用。...如果嵌套类的实例可以与其宿主类的实例隔离存在,那么嵌套类必须是静态成员类:不可能在没有宿主实例的情况下创建非静态成员类的实例。...非静态成员类实例和其宿主实例之间的关联是在创建成员类实例时建立的,并且之后不能被修改。通常情况下,通过在宿主类的实例方法中调用非静态成员类构造方法来自动建立关联。

    37520

    申明与定义的区别

    ,因为类型不具有外部连接性,不同源文件拥有相同类型定义不会报编译错误,但头文件不能重复包含。...typedef int int32; 注意,类型的作用域是源文件,即类型不具有外部连接性质,因此可以在不同源文件定义相同名称类型,比如定义同名的类是不会报重定义错误的,这也说明了类型的定义应该放在头文件中...,但在同一个源文件定义相同名称类型则编译器会报重定义错误。...声明类型,只给出类型名称。 class A; 类型被声明之后,可以用于声明其他的标识符,但不能利用它来定义对象,也不能使用类型成员。...这里所说的外部连接与内部连接的区别在于链接器接的时候是否将当前目标文件中的定义与其它目标文件对比,并报告是否有重定义错误。内连接不会进行对比,故不同源文件中定义相同名称类型是不会报错的。

    1.5K20

    【收藏篇】Java关键字 及其 更详细介绍

    final用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变finally用于处理异常情况,用来声明一个基本肯定会被执行到的语句块float基本数据类型之一,单精度浮点数类型...volatile 的目标用途是为了确保所有线程所看到的指定变量的值都是相同的。...如果方法具有非 void 的返回类型,return 语句必须具有相同或兼容类型的参数。 返回值两侧的括号是可选的。 4) do 运行 do 关键字用于指定一个在每次迭代结束时检查其条件的循环。...如果某个特定异常类未被任何catch子句处理,该异常将沿着调用栈递归地传播到下一个封闭try块。如果任何封闭try块都未捕获到异常,Java解释器将退出,并显示错误消息和堆栈跟踪信息。...,return语句必须具有相同或兼容类型的参数。

    65920

    Java之Java关键字及其作用

    ,这里常见的类型有类和接口 final 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变 finally 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块...volatile 的目标用途是为了确保所有线程所看到的指定变量的值都是相同的。...如果方法具有非 void 的返回类型,return 语句必须具有相同或兼容类型的参数。 返回值两侧的括号是可选的。 4) do 运行 do 关键字用于指定一个在每次迭代结束时检查其条件的循环。...如果某个特定异常类未被任何catch子句处理,该异常将沿着调用栈递归地传播到下一个封闭try块。如果任何封闭try块都未捕获到异常,Java解释器将退出,并显示错误消息和堆栈跟踪信息。...,return语句必须具有相同或兼容类型的参数。

    67210

    【C++初阶】:C++入门篇(一)

    无论是C语言还是C++,在同一个局部域里面是不允许出现相同的变量名的,在同一个作用域下定义了两个相同变量名的变量会导致访问冲突,编译器不知道该使用哪个变量,从而导致报错。...格式:命名空间名称::命名空间成员 int main() { printf("%d\n", N1::a); // :: 是作用域限定符 N1::test(); printf("%d\n", N2:...格式:using 命名空间名称::命名空间成员 using N1::a; // using N2::N3::Node; int main() { printf("%d\n", a); printf...格式:using 命名空间名称::命名空间成员 using namespace N2; int main() { printf("%d\n", a); test(); printf("%d\n"...; 就相当于破坏了作用域之间的封闭性,将命名空间中的成员全部暴露出来了。

    9810

    CA1708:标识符应以大小写之外的差别进行区分

    值 规则 ID CA1708 类别 命名 修复是中断修复还是非中断修复 重大 原因 两种类型成员、参数或完全限定的命名空间的名称转换为小写时是相同的。...默认情况下,此规则仅查看外部可见的类型成员和命名空间,但这是可配置的。 规则说明 不能仅通过大小写区分命名空间、类型成员和参数的标识符,因为针对公共语言运行时的语言不需要区分大小写。...此规则仅对公共可见成员触发。 如何解决冲突 选择与其他标识符比较时(不区分大小写)具有唯一性的名称。 何时禁止显示警告 不禁止显示此规则发出的警告。 库可能无法用于 .NET 中的所有可用语言。

    48200

    阿里Java编码手册实战详解-命名规范篇

    【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 反例:_name / __name / $name / name_ / name$ / name__ 2....【强制】避免在子父类的成员变量之间、或者不同代码块的局部变量之间采用完全相同的命 名,使可读性降低。...说明:子类、父类成员变量名相同,即使是 public 类型的变量也是能够通过编译,而局部变量在同一方法 内的不同代码块中同名也是合法的,但是要避免使用。...对于非 setter/getter 的参数名称也要避免与成员 变量名称相同。...money 命名相同 final int money = 615; // ... } } } class Son extends ConfusingName { // 不允许与父类的成员变量名称相同

    62541

    阿里Java编码手册实战详解-命名规范篇

    【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 反例:_name / __name / $name / name_ / name$ / name__ 2....【强制】避免在子父类的成员变量之间、或者不同代码块的局部变量之间采用完全相同的命 名,使可读性降低。...说明:子类、父类成员变量名相同,即使是 public 类型的变量也是能够通过编译,而局部变量在同一方法 内的不同代码块中同名也是合法的,但是要避免使用。...对于非 setter/getter 的参数名称也要避免与成员 变量名称相同。...money 命名相同 final int money = 615; // ... } } } class Son extends ConfusingName { // 不允许与父类的成员变量名称相同

    1.1K00

    Java基础(4)-Java标识符和关键字

    【强制】避免在子父类的成员变量之间、或者不同代码块的局部变量之间采用完全相同的命名, 使可读性降低。...说明:子类、父类成员变量名相同,即使是 public 类型的变量也是能够通过编译,而局部变量在同一方法 内的不同代码块中同名也是合法的,但是要避免使用。...对于非 setter/getter 的参数名称也要避免与成员变 量名称相同。...money 命名相同 final int money = 15978; // ... } } } class Son extends ConfusingName { // 不允许与父类的成员变量名称相同...对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口 final 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 finally 用于处理异常情况

    96630
    领券