Gradle系列——Groovy面向对象(基于Groovy文档4.0.4)day2-2

news/2024/5/20 4:12:34 标签: java, gradle, 开发语言, groovy

Gradle系列——Groovy面向对象(基于Groovy文档4.0.4)day2-2

  • Groovy面向对象
    • 类型
      • 原始类型
        • 整数类型
        • 浮点型
        • 布尔型
        • char
      • 包装类型
    • 继承
    • 泛型
    • Class类
    • 内部类
    • 匿名内部类
    • 静态内部类
    • 抽象类
    • 接口
    • 实现
    • 闭包(lambda表达式)
      • 语法
        • 闭包:
        • lambda
      • 调用

Groovy面向对象

类型

原始类型

整数类型

  1. byte:8位
  2. short:16位
  3. int:32位
  4. long:64位

浮点型

  1. float:32位
  2. double:64位

布尔型

  1. true
  2. false

char

char :16位

包装类型

  1. Boolean
  2. Character
  3. Short
  4. Long
  5. Integer
  6. Float
  7. Double

当原始类型调用.toString()或者 .equals(other)可以进行自动包装和展开

继承

使用extends关键字,Groovy同样也不支持多重继承,可以继承类或者接口(类继承类,接口继承接口)

java">class Test3 extends Test2{
	...
}
java">//虽然不报错,但在运行是就会有报错
class Test3 extends Test2,Test4{} 

泛型

Groovy 在泛型方面与 Java 具有相同的概念。 定义类和方法时,可以使用类型参数并创建 泛型类、接口、方法或构造函数。

泛型类和方法的使用,无论它们是否在 Java 中定义 或 Groovy,可能涉及提供类型参数。

我们可以声明一个 “字符串列表” 如下所示:

java">List<String> roles = ['Trinity', 'Morpheus']

Class类

使用class关键字声明
类和类成员可以具有与 Java 中相同的修饰符(public、protected、private、static 等)

Groovy 类与其 Java 对应类之间的主要区别是:

  1. 没有可见性修饰符的类或方法自动成为公共的(可以使用特殊的注释来实现包私有的可见性)。
  2. 没有可见性修饰符的字段会自动转换为属性,从而减少冗长的代码, 因为不需要显式的 getter 和 setter 方法。 更多关于这方面的内容将在 字段和属性部分 。
  3. 类不需要与其源文件定义具有相同的基本名称,但在大多数情况下强烈建议使用(另请参阅关于脚本的下一点)。
  4. 一个源文件可能包含一个或多个类(但如果文件包含任何不在类中的代码,则将其视为脚本)。 脚本只是一些类 特殊约定,并且将与其源文件同名(因此不要在与脚本源文件同名的脚本中包含类定义)。

以下代码提供了一个示例类。

java">class Test1 {
    def username;
    def password;
    
    def getAll(){
        username = "wangwu"
        password = "123321"
        username + password
    }
}

内部类

java">package cn.test

class Test1 {
    def username;
    def password;

    def showInner(){
        def inner = new Inner()
        inner.show()
    }

    class Inner{
        def show(){
            println("inner ...")
        }
    }
}

匿名内部类

java">

class Outer3 {
    private String privateStr = 'some string'

    def startThread() {
        new Thread(new Runnable() {      
            void run() {
                println "${privateStr}."
            }
        }).start()                       
    }
}


静态内部类

使用static关键字进行声明

java">class Test7 {
    static class InnerTest7{
        
    }
}

抽象类

使用abstract关键字设置位抽象类,方法也必须用abstract关键字声明,否则认为是带有方法体的方法

java">abstract class Test2 {
   abstract def show();
    
    def show2(){
        println("show2")
    }
}

接口

使用interface关键字声明

java">interface Test5 {
    def showTest5()
}

实现

使用implements关键字进行实现

java">class Test6 implements Test5{
  
}

闭包(lambda表达式)

闭包是一个开放的、匿名的代码块,它可以接受参数、也可以有返回值
闭包可以引用周围作用域中声明的变量(lambda表达式)
虽然我在这里这样将闭包称为lambda但实际上闭包不等于lambda,至于区别大家可以去看一下相关文章

语法

闭包:

java">{...}

java">def bi(a){
    println(a)
}

lambda

java">()->{...}

如:

java">def lam = ()->{
    println("this is lam")
}

调用

  1. 直接使用名字调用
  2. 使用call方法调用
java">lam()

lam.call()

http://www.niftyadmin.cn/n/1717126.html

相关文章

Gradle系列——Gradle测试,Gradle生命周期,settings.gradle说明,Gradle任务(基于Groovy文档4.0.4)day2-3

Gradle系列——Gradle测试&#xff0c;Gradle生命周期&#xff0c;settings.gradle说明&#xff0c;Gradle任务&#xff08;基于Groovy文档4.0.4&#xff09;day2-3Gradle测试修改支持Junit 5测试1.打开build.gradle文件2.加上test3.刷新Gradle依赖Gradle生命周期settings.grad…

去除List集合中的重复值

最近项目中需要对list集合中的重复值进行处理&#xff0c;大部分是采用两种方法&#xff0c;一种是用遍历list集合判断后赋给另一个list集合&#xff0c;一种是用赋给set集合再返回给list集合。 但是赋给set集合后&#xff0c;由于set集合是无序的&#xff0c;原先的顺序就打乱…

Linux下打包压缩war、解压war包和jar命令

Linux下打包压缩war、解压war包和jar命令 解决 把project_a文件夹下的文件打包成project.war 1. 打包 jar -cvf project.war /project_a -c 创建war包 -v 显示过程信息 -f 指定 JAR 文件名&#xff0c;通常这个参数是必须的 -M 不产生所有项的清单&#xff08;MANIFES…

linux 下 tar 命令

tar -c: 建立压缩档案 -x&#xff1a;解压 -t&#xff1a;查看内容 -r&#xff1a;向压缩归档文件末尾追加文件 -u&#xff1a;更新原压缩包中的文件 这五个是独立的命令&#xff0c;压缩解压都要用到其中一个&#xff0c;可以和别的命令连用但只能用其中一个。下面的参数是根据…

Linux下rz命令和sz命令使用方法

sz命令 用途说明&#xff1a;sz命令是利用ZModem协议来从Linux服务器传送文件到本地&#xff0c;一次可以传送一个或多个文件。相对应的从本地上传文件到Linux服务器&#xff0c;可以使用rz命令。 常用参数 -a 以文本方式传输&#xff08;ascii&#xff09;。 -b 以二进制方…

Linux下wget命令使用方法

Wget 的以一款方便的使用HTTP协议进行文件抓取的工具&#xff0c;在linux下面比较常用&#xff0c;支持以下功能&#xff1a; 1&#xff09;支持断点下传功能 2&#xff09;同时支持FTP和HTTP下载方式 3&#xff09;支持代理服务器 4&#xff09;设置方便简单&#xff1b; 5&am…

MySQL添加字段,修改字段,删除字段,修改表信息

MySql的简单语法&#xff0c;常用&#xff0c;却不容易记住。当然&#xff0c;这些Sql语法在各数据库中基本通用。下面列出&#xff1a; 一&#xff1a;查询信息 1.登录数据库 >mysql -u root -p 数据库名称 2.查询所有数据表 >show tables; 3.查询表的字段信息 >…

Linux下history命令用法

如果你经常使用 Linux 命令行&#xff0c;那么使用 history&#xff08;历史&#xff09;命令可以有效地提升你的效率。本文将通过实例的方式向你介绍 history 命令的 15 个用法。 使用 HISTTIMEFORMAT 显示时间戳 当你从命令行执行 history 命令后&#xff0c;通常只会显示已…