groovy类、构造函数、方法
数据类型:groovy支持Java语言规范定义的数据类型
类:与Java类的主要区别
1、没有可见修饰符的类或者方法是自动公开的
2、类不需要与源文件定义相同名称,但是默认规定定义一样
3、一个源文件包含一个或者多个类,但是如果文件包含不再类中的任何代码将视为脚本
4、脚本只是具有一些特殊约定的类
5、不要在脚本中定义与脚本源文件相同名称的类定义
6、必须用abstract关键字修饰抽象方法和类
7、可以使用as运算符使对象的实例在运行时实现接口
/**
* Created by Jxy on 2018/12/21 7:43
* 三种构造函数的使用
* Groovy方法、参数
*/
class PersonConstructor {
String name
Integer age PersonConstructor(name, age) {
this.name = name
this.age = age
}
} def person1 = new PersonConstructor('Marie', 1)
def person2 = ['Marie', 2] as PersonConstructor
PersonConstructor person3 = ['Marie', 3]
/*
方法基本的定义
*/
def someMethod() { 'method called' }//声明没有返回值类型并且没有参数的方法
String anotherMethod() { 'another method called' }//具有显式返回类型且无参数的方法
def thirdMethod(param1) { "$param1 passed" }//没有定义类型的参数的方法
static String fourthMethod(String param1) { "$param1 passed" }//带String参数的静态方法
/*
方法的命名参数
*/
def foo(Map args) { "${args.name}: ${args.age}" }
def string = foo(name: 'Marie', age: 1)
println(string)//Marie: 1
/*
方法参数混合命名和位置参数
Mixing named and positional parameters
map必须放在参数第一个位置不然会报异常:groovy.lang.MissingMethodException
*/
def foo(Map args, Integer number) { "${args.name}: ${args.age}, and the number is ${number}" }
foo(name: 'Marie', age: 1, 23)
foo(23, name: 'Marie', age: 1) /*
如果map没有在第一个参数位置则应该使用显示map参数替换命名参数
*/
def foo(Integer number, Map args) { "${args.name}: ${args.age}, and the number is ${number}" }
foo(23, [name: 'Marie', age: 1]) /*
默认参数
*/
def foo(String par1, Integer par2 = 1) { [name: par1, age: par2] }
assert foo('Marie').age == 1
/*
可变参数
可变参数与重载
*/
def foo(Object... args) { 1 }
def foo(Object x) { 2 }
assert foo() == 1
assert foo(1) == 2
assert foo(1, 2) == 1
groovy类、构造函数、方法的更多相关文章
- 工作随笔——Java调用Groovy类的方法、传递参数和获取返回值
接触Groovy也快一年了,一直在尝试怎么将Groovy引用到日常工作中来.最近在做一个功能的时候,花了点时间重新看了下Java怎么调用Groovy的方法.传递参数和获取返回值. 示例Groovy代码 ...
- Java反射机制 之 获取类的 方法 和 属性(包括构造函数)(Day_06)
把自己立成帆,才能招来凤. 运行环境 JDK8 + IntelliJ IDEA 2018.3 本文中使用的jar包链接 https://files.cnblogs.com/files/papercy ...
- C#动态创建和动态使用程序集、类、方法、字段等
C#动态创建和动态使用程序集.类.方法.字段等 分类:技术交流 (3204) (3) 首先需要知道动态创建这些类型是使用的一些什么技术呢?其实只要相关动态加载程序集呀,类呀,都是使用反射,那么动 ...
- 深入.net(类及方法)
.net 的命名规则: 帕斯卡命名法 ----- 多个单词说明,且直接连接,并首字母大写(类名.方法名.属性名....) 骆驼命名法---------多个单词说明,且直接连接,并首字母大写,第一个字母 ...
- 几种常用的JS类定义方法(转)
// 方法1 对象直接量 var obj1 = { v1 : "", get_v1 : function() { return this.v1; }, set_v1 : funct ...
- String类和StringBuffer类的方法
一.String类的方法 public char charAt(int index) 返回字符串index个字符 public int length() 返回字符串长 ...
- python类及其方法
python类及其方法 一.介绍 在 Python 中,面向对象编程主要有两个主题,就是类和类实例类与实例:类与实例相互关联着:类是对象的定义,而实例是"真正的实物",它存放了类中 ...
- React与ES6(三)ES6类和方法绑定
React与ES6系列: React与ES6(一)开篇介绍 React和ES6(二)ES6的类和ES7的property initializer React与ES6(三)ES6类和方法绑定 React ...
- WorldWind源码剖析系列:BMNG类构造函数深入分析
BMNG构造函数深入分析 一.主要类图 二.主要功能: 1) BMNG类 BMNG类将包含以“Blue Marble”为主题的所有可渲染影像的根节点添加到当前星球的可渲染对象列表中,包括 ...
随机推荐
- angular核心原理解析1:angular自启动过程
angularJS的源代码整体上来说是一个自执行函数,在angularJS加载完成后,就会自动执行了. angular源代码中: angular = window.angular || (window ...
- 给 console 添加颜色
简评:使用 %c 声明可以给 console 的输出添加 CSS 样式,日志太多的话,给不同种类的日志设置不同的样式,可以极大的提升阅读体验. 什么是 %c %c: 标识将 CSS 样式应用于 %c ...
- app.module.ts说明
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; ...
- BZOJ AC 300祭!
- VS 代码自动对齐快捷键
全部代码代码自动对齐快捷键为 Ctrl + a(按后可松松手) + k(按后可松松手) + f
- Python开发:Windows下Python+Eclipse+Pydev开发环境配置
一.配置前的准备: 1.安装jdk: 下载地址: https://www.oracle.com/technetwork/java/javase/downloads/index.html 2.安装Ecl ...
- Mac下的浏览器类似Windows中Ctrl+F5的不请求缓存刷新页面的快捷键
正常方式: [shitf]+[command]+[r] 如果改过快捷键的: [fn]+[shift]+[command]+[f]
- WCF系列教程之WCF实例化
本文参考自http://www.cnblogs.com/wangweimutou/p/4517951.html,纯属读书笔记,加深记忆 一.理解WCF实例化机制 1.WCF实例化,是指对用户定义的服务 ...
- 1.TypeError: must be str, not bytes
1.TypeError: must be str, not bytes错误: 解答: 写文件处 open(filename, 'w').write 应该写为 open(filename, 'wb'). ...
- javascript006_Object_模拟java的Map
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...