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

【Groovy】Groovy 方法调用 ( 使用 对象名.成员名 访问 Groovy 类成员 | 使用 对象名.‘成员名‘ 访问类成员 | 使用 对象名 访问类成员 )

文章目录 一、使用 对象名.成员名 访问 Groovy 类成员 二、使用 对象名.'...成员名' 访问 Groovy 类成员 三、使用 对象名['成员名'] 访问 Groovy 类成员 四、完整代码示例 一、使用 对象名.成员名 访问 Groovy 类成员 ---- 对 对象名.成员名..." student.age = 16 使用 对象名.成员名 访问成员 , 相当于执行 getter 方法 ; // 使用 对象名.成员名 访问成员 , 相当于执行 getter 方法 println student.name...‘成员名’ 访问 Groovy 类成员 ---- 可以使用 对象名....age' 执行结果 : Han 32 三、使用 对象名[‘成员名’] 访问 Groovy 类成员 ---- 使用 对象名[‘成员名’] 访问 Groovy 类成员 , 相当于调用 getAt 方法

2.3K20

Kotlin中扩展函数与属性示例详解

前言 Kotlin 中类扩展方法并不是在原类内部进行拓展,通过反编译为Java代码,可以发现,其原理是使用装饰模式,对源类实例操作和包装,其实际相当于我们在 Java中定义工具类方法,并且该工具类方法使用调用者为第一个参数...,然后在工具方法中操作该调用者; 理论上来说,扩展函数很简单,它就是一个类成员函数,不过定义在类外面。...接收者类型是由扩展函数定义,接收对象是该类型一个实例 可以调用成员函数一样调用这个函数: println("Kotlin".lastChar()) n 从某种意义上说,现在已经为String...不管String类是用Java、Kotlin,或者Groovy其他JVM语言编写,只要它会编译为Java类,就可以为这个类添加自己扩展。 在这个扩展函数中,可以其他成员函数一样用this。...和在类内部定义方法不同是,扩展函数不能访问私有的或者是受保护成员。 3.3.1导入和扩展函数 对于定义一个扩展函数,它不会自动地在整个项目范围内生效。

1.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

面试题36(关于构造方法理解?)

下面关于构造方法说法不正确是?...A 构造方法也属于类方法,用于创建对象时候给成员变量赋值 B 构造方法不可以重载 C 构造方法没有返回值 D 构造方法一定要和类名相同 考点:考察求职者对构造方法理解 出现频率:★★★★★ 【...面试题分析】 所谓构造方法, 1,使用关键字new实例化一个新对象时候默认调用方法; 2,构造方法所完成主要工作是对新创建对象数据成员赋初值。...使用构造方法时需注意以下几点: 1.构造方法名称和其所属类名必须保持一致; 2.构造方法没有返回值,也不可使用void; 3.构造方法也可以普通方法一样被重载(但不能被重写); 4.构造方法不能被...static和final修饰; 5.构造方法不能被继承,子类使用父类构造方法需要使用super关键字 所以参考答案是(B)

93040

关于C++中操作符重载疑问 :四个运算符=, ->, [], ()不可以重载为全局函数(友员函数)

C++规定有四个运算符 =, ->, [], ()不可以是全局域中重载(即不能重载为友员函数),这是为什么呢?...那么为什么赋值运算符不可以重载为类友元函数?同样都是双目运算符+为什么它就可以呢?...,执行赋值语句a = 7;程序会去调用类A中相应赋值运算符重载函数,而不会上面原来那样去调用有参构造函数。...最初赋值语句a = 7,执行时,实际做操作是a(7)。而当类中有定义赋值运算符重载成员函数,执行赋值语句时,程序就只会去调用相应赋值运算符重载函数。 ...类A里有成员函数f(),当 复制代码 代码如下: A a; A* p = &a;  p->f();   //虽然类A中没有自己定义运算符->重载成员函数,但这里仍可这样使用 然而,当我们把->运算符重载为类

97220

【java筑基】一文学习内部类

外部类依旧不能访问静态内部类成员,但是可以通过静态内部类作为调用者访问静态内部类成员。...在外部类中可以使用其它类一样使用内部类,但是不能够在外部类静态成员中访问非静态内部类。...在外部类以外使用非静态内部类需要通过外部类对象来调用内部类构造方法,参考以下代码。...; } } 在外部类以外使用静态内部类需要外部类调用内部类构造方法创建内部类,参考以下代码。...使用匿名内部类使代码更加简洁。由于匿名内部类不能是抽象类,所以上述代码实现了接口中所有抽象方法。在继承父类实现匿名内部类时,必须实现父类抽象方法,可以重写父类中非抽象方法

19620

PHP面向对象精要

2 继承用private和protected访问修饰符可见性 属性方法private不可以被继承 属性方法protected类外部不可见,可以被继承  属性方法public 所定义成员可以在任何地方被访问...self:表示当前类作用域,与this不同是它不表示类某个特定实例,在类之外代码中不能使用self,而且它不能识别自己在继承中层次位置。...接口常量和类常量使用完全相同。 它们都是定值,不能被子类或子接口修改。...,“__set()”和“__get()”这两个方法,这两个方法不是默认存在,而是我们手工添加到类里面去构造方法(__construct())一样, 类里面添加了才会存在,可以按下面的方式来添加这两个方法...nm){ echo "isset()函数测定私有成员时,自动调用"; return isset(this->nm){ echo "当在类外部使用unset()函数来删除私有成员时自动调用<br

2.4K20

在你女票面前 你没有private属性

成员内部类就是将内部类作为一个外部类成员,地位跟变量,方法一样。 内部类一个很大特点就是,就算我在外部类定义了一个私有变量,外部无法访问,但是内部类依然可以访问。...内部类 来看一下内部类一些特点 1.内部类实例化与普通类实例化有区别,因为内部类是外部类成员,所以使用 外部类 . 内部类 方法表示要实例化内部类。...局部内部类 名字依然很好,局部内部类跟局部变量很相似,一般定义在方法里面,而且只能在方法内部使用。出了方法方法变量就没法使用了,局部内部类也一样,在方法不可调用。 ?...局部内部类 局部内部类有点一次性使用类,因为如果需要公用和重复调用,最好设计成外部类,而局部内部类只在方法内可以使用方法调用完了,局部内部类也就没作用了。...总之记住一点,怎么使用局部变量,就怎么使用局部内部类。 匿名内部类 局部内部类有点一次性使用内部类,其实还有一种就是一次性使用内部类,那就是匿名内部类。

45950

【C++】继承

当然也是可以。但是这种情况,使用继承就会非常香。 为什么这种情况可以使用继承呢? 大家想,要定义学生类,学生是人吗? 当然是人,这是毫无疑问。 那它具备人属性吗?当然具备。...那这里不可见是什么意思呢? 这里不可见是指基类私有成员还是被继承到了派生类对象中,但是语法上限制派生类对象不管在类里面还是类外面都不能去访问它。...就可以理解成好比是你爸爸私房钱,你看不到,也不能花,不论你是什么继承。 所以,如果一个类成员是私有的,除了在类外不能被直接访问,它子类虽然可以继承,但也不能直接访问(不可)。...如果基类没有默认构造函数,则必须在派生类构造函数初始化列表阶段显示调用。 那其实这里感觉就有点子类里面有一个父类自定义类型成员一样。...那我们看到其实和构造一样,也是去自动调了父类拷贝构造,完成父类部分拷贝。 那我们自己实现拷贝构造呢? 我们发现对于父类成员不能正常那样写。

9010

STRING对象不可原理

ps:主要是其内部使用了private final修饰成员,如果想修改,需要使用到反射技术 string方法修改效果是通过新建StringBuilder来实现,更老版本使用StringBuffer...内存结构如下图所示: Java和C++一个不同点是, 在Java中不可能直接操作对象本身,所有的对象都由一个引用指向,必须通过这个引用才能访问对象本身,包括获取成员变量值,改变对象成员变量,调用对象方法等...那么在String中,明明存在一些方法调用他们可以得到改变后值。这些方法包括substring, replace, replaceAll, toLowerCase等。...这也是为什么replace, substring,toLowerCase等方法都存在返回值原因。...也是为什么下面这样调用不会改变对象值: String ss = "123456"; System.out.println("ss = " + ss); ss.replace('1',

66940

C++和Java中继承比较

中,祖父类成员不能直接访问。...因此,我们不能改变 Java 中基类成员保护级别,如果某个数据成员在基类中是公共或受保护,那么它在派生类中仍然是公共或受保护。与 C++ 一样,基类私有成员在派生类中不可访问。 ...与 C++ 不同,在 Java 中,我们不必记住那些由基类访问说明符和继承说明符组合而成继承规则。  5) 在 Java 中,方法默认是虚拟。在 C++ 中,我们明确使用虚拟关键字。...8) 在C++中,会自动调用父类默认构造函数,但是如果我们要调用父类参数化构造函数,就必须使用Initializer list。...和C++一样,Java中会自动调用父类默认构造函数,但是如果我们要调用参数化构造函数,那么就必须使用super来调用父构造函数。请参阅以下 Java 示例。

55410

【笔记】《C++Primer》—— 第三部分:类设计者工具

旧标准中我们使用private版本构造函数来控制构造,但如今如果要控制拷贝最好用=delete 我们对一个类拷贝和资源管理通常表现为两种:类,指针类。...类需要它拷贝前后两个对象完全独立,改变副本不会产生影响;指针类通常使用shared_ptr来管理,当需要手动管理时,一般采用引用计数法来保持指针引用记录 管理资源类通常额外定义了一个swap...当我们需要显式调用递增递减运算符时,我们需要对后置版本参数传递一个任意int值,这样编译器才能区分出版本 重载函数调用运算符让我们可以使用函数一样使用对象,称为函数对象,函数对象常常用作泛型算法实参...重载 overload,指对一个同名方法进行了几种不同参数实现 可以将一个派生类对象转换为基类对象,此时派生类独有的部分将被截断,其基类部分被处理而派生类部分被忽略 有时我们不希望派生类独有的部分被截断则需要使用类指针来调用重载函数或使用指针所指成员...,对于实现内容我们一样可以使用=default简化 如果基类中基本操作函数不可访问或被删除,则派生类中对应成员是被删除因为我们无法使用基类来操作那些成员 C11中,我们可以用using重用基类定义构造函数

1.7K10

PHP抽象类和接口用法实例详解

不能创建abstract 类实例。然而可以创建一个变量,其类型是一个抽类,并让它指向具体子类一个实例。不能有抽构造函数或抽静态方法。...接口 oop模式中接口也是比不可一部分,接口(interface)是抽变体。在接口中,所有方法都是抽。多继承性可通过实现这样接口而获得。接口中所有方法都是抽,没有一个有程序体。...接口只可以定义static final成员变量。接口实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口方法。...然后,它可以在实现了该接口任何对像上调用接口方法。由于有抽类,它允许使用接口名作为引用变量类型。通常动态联编将生效。...3、接口中不可以声明成员变量(包括类静态变量),但是可以声明类常量。抽象类中可以声明各种类型成员变量,实现数据封装。 4、接口没有构造函数,抽象类可以有构造函数。

71130

CCPP中static用法:全局变量与局部变量

(2)可见性:static修饰全局变量或函数时,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。这个函数也只能在本文件中调用不能被其他文件调用。...所以对于静态资源来说,它是不可能知道一个类中有哪些非静态资源;但是对于非静态资源来说就不一样了,由于它是实例化对象出来之后产生,因此属于类这些东西它都能认识。...,在类实例化对象之前就已经分配空间了,而类非静态成员必须在类实例化对象后才有内存空间,所以这个调用就出错了,就好比没有声明一个变量却提前使用一样。...结论4: 类非静态成员函数可以调用用静态成员函数,但反之不能。...结论5:类静态成员变量必须先初始化再使用。 结合上面的五个例子,对类静态成员变量和成员函数作个总结: 一。静态成员函数中不能调用非静态成员。 二。非静态成员函数中可以调用静态成员

1.2K20

C++ 类构造函数初始化列表

构造函数初始化列表以一个冒号开始,接着是以逗号分隔数据成员列表,每个数据成员后面跟一个放在括号中初始化式。例如: ? 上面的例子中两个构造函数结果是一样。...初始化和赋值对内置类型成员没有什么大区别,上面的任一个构造函数都可以。对非内置类型成员变量,为了避免两次构造,推荐使用类构造函数初始化列表。但有的时候必须用带有初始化列表构造函数: ?...因为 const 对象或引用类型只能初始化,不能对他们赋值。 ? ? 初始化数据成员与对数据成员赋值含义是什么?有什么区别? 首先把数据成员按类型分类并分情况说明: ?...因为类类型数据成员对象在进入函数体前已经构造完成,也就是说在成员初始化列表处进行构造对象工作,调用构造函数,在进入函数体之后,进行是对已经构造好类对象赋值,又调用个拷贝赋值操作符才能完成(如果并未提供...结果是 m_x 将有一个不可预测值。有两种方法避免它,一个是总是按照你希望它们被初始化顺序声明成员,第二个是,如果你决定使用初始化列表,总是按照它们声明顺序罗列这些成员。这将有助于消除混淆。

1.9K20

【笔记】《C++Primer》—— 第19章:特殊工具与技术

这个类型主要是让我们可以将一组整型常量组织在一起,一个简单文件夹一样 C原本只有一种枚举类型:不限定作用域枚举。C11加入了限定作用域枚举。...,否则编译器会认为此函数声明无效,后面的取地址符也不可少,这是因为成员函数到函数指针间没有自动转换规则 我们调用成员函数方法使用成员类差不多,区别是标志着函数名括号仍然不可少,这是因为调用运算符优先级太高了...,由于成员指针不是可调用对象,因此最常用方法仍然是使用标准库模板function。...union和struct可对照着看,union特性是任意时刻只允许其中一个成员有值,然后同样可以和struct一样有丰富成员,当作一个简单类来使用,默认访问控制符是public union不能继承其他类...对象赋值,我们必须自定义这些操作 使用volatile前要问自己使用这个特性是不是真的有意义,是不是真的需要 C++有时候需要调用其他语言编写函数,对于这样函数编译器尽管检查调用方法和C++函数一样

80740

你知道匿名内部类、Lambda表达式为嘛只能使用外部final变量吗?

综上所述,选择final来修饰外部方法成员,让其引用地址保持不变、值也不能被改变保证了外部类稳定性。...高效,jvm在调用final方法时会转入内嵌机制进行inline优化(inline优化是指:在编译时候直接调用方法代码替换,也就是内嵌,而不是在运行时调用方法。...所以其实,private方法,默认就是final,会使用内嵌机制调用。so,能private就private掉吧),大大提高执行效率。 如下现象?你怎么解释final修饰c是不可呢?...其实这里并不是这样,因为你new出来A对象是两个,然后这个c是成员变量属于对象,所以地址值是不一样,所以根本就不是同一个,谈何不变呢?...使用场景 匿名内部类使用也是非常非常多,所以理解为什么,能够更好使用内部类,从而可以更优美的去规划自己代码结构 总结 任何一向规定、规范都不是凭空制定而且也不可能随便下定义

1.1K70

C++继承

那么如果往常一样去定义,会写很多重复内容。 这时候C++就提供了一种语法叫做继承。...成员 派生类protected成员 派生类protected成员 派生类private成员 基类private成员 在派生类中不可见 在派生类中不可见 在派生类中不可见 1.这里不可见是指基类私有成员还是被继承到了派生类对象中...基类对象不能赋值给派生类对象。 这里不是类型转换,是类似与切割方式: 子类给父类赋值其实只是让子类中父类成员给赋值,多余就不要了,这就像切割一样。...构造函数: 首先要知道,在子类当中,父类成员调用父类构造函数才能初始化,这里父类构造函数我们用缺省值,如果将缺省值去掉,还是这样去创建子类对象是会报错。...组合:例如头和眼睛,眼睛应该在头上,但是他们细节没相似之处,不能说头是眼睛。 继承和组合要根据实际情况去使用,如果都差不多就用组合。

42610

super关键字和继承中潜规则

现在我们在VIP类中加一个到期时间,如果VIP到期,当他买买买时候,调用是普通玩家未打折方法。 我们要在VIP中调用普通玩家方法,上面不是说被覆盖了不可见么?...其实我们是可以在子类中通过super关键字来调用父类被覆盖方法。 super关键字调用 super和this 看了上面的例子,是不是联想到我们曾经学过this,他们确实有点,但是也有区别。...相似 1.没有重名时候,都会隐身,当有重名时候必须现身。参数与成员变量重名,使用this,父类成员变量与子类成员变量重名,使用super。 1 2.他们都可以调用构造器。...this调用自己类中构造器,而super可以调用父类中构造器。 super除了调用被子类重写后被隐藏成员变量和方法,还有一个重要作用就是调用父类构造器。...和this一样,第一行只能出现this或者super之一,要么调用自己构造器,要么调用父类构造器。

48030
领券