- Groovy 教程
- Groovy - 首页
- Groovy - 概述
- Groovy - 环境
- Groovy - 基本语法
- Groovy - 数据类型
- Groovy - 变量
- Groovy - 运算符
- Groovy - 循环
- Groovy - 决策
- Groovy - 方法
- Groovy - 文件 I/O
- Groovy - 可选值
- Groovy - 数字
- Groovy - 字符串
- Groovy - 范围
- Groovy - 列表
- Groovy - 映射
- Groovy - 日期和时间
- Groovy - 正则表达式
- Groovy - 异常处理
- Groovy - 面向对象
- Groovy - 泛型
- Groovy - 特性
- Groovy - 闭包
- Groovy - 注解
- Groovy - XML
- Groovy - JMX
- Groovy - JSON
- Groovy - DSLS
- Groovy - 数据库
- Groovy - 构建器
- Groovy - 命令行
- Groovy - 单元测试
- Groovy - 模板引擎
- Groovy - 元对象编程
- Groovy 有用资源
- Groovy - 快速指南
- Groovy - 有用资源
- Groovy - 讨论
Groovy - 特性
特性是语言的结构构造,允许:
- 行为的组合。
- 接口的运行时实现。
- 与静态类型检查/编译的兼容性
它们可以被视为包含默认实现和状态的接口。使用 trait 关键字定义特性。
下面给出一个特性的示例:
trait Marks { void DisplayMarks() { println("Display Marks"); } }
然后可以使用 implement 关键字以与接口类似的方式实现特性。
class Example { static void main(String[] args) { Student st = new Student(); st.StudentID = 1; st.Marks1 = 10; println(st.DisplayMarks()); } } trait Marks { void DisplayMarks() { println("Display Marks"); } } class Student implements Marks { int StudentID int Marks1; }
实现接口
特性可以实现接口,在这种情况下,接口使用 implements 关键字声明。
下面给出一个特性实现接口的示例。在下面的示例中,可以注意到以下关键点。
定义了一个名为 Total 的接口,其中包含 DisplayTotal 方法。
特性 Marks 实现 Total 接口,因此需要为 DisplayTotal 方法提供实现。
class Example { static void main(String[] args) { Student st = new Student(); st.StudentID = 1; st.Marks1 = 10; println(st.DisplayMarks()); println(st.DisplayTotal()); } } interface Total { void DisplayTotal() } trait Marks implements Total { void DisplayMarks() { println("Display Marks"); } void DisplayTotal() { println("Display Total"); } } class Student implements Marks { int StudentID int Marks1; }
上述程序的输出将是:
Display Marks Display Total
属性
特性可以定义属性。下面给出一个包含属性的特性的示例。
在以下示例中,类型为整数的 Marks1 是一个属性。
class Example { static void main(String[] args) { Student st = new Student(); st.StudentID = 1; println(st.DisplayMarks()); println(st.DisplayTotal()); } interface Total { void DisplayTotal() } trait Marks implements Total { int Marks1; void DisplayMarks() { this.Marks1 = 10; println(this.Marks1); } void DisplayTotal() { println("Display Total"); } } class Student implements Marks { int StudentID } }
上述程序的输出将是:
10 Display Total
行为组合
特性可用于以受控的方式实现多重继承,避免菱形问题。在以下代码示例中,我们定义了两个特性 - **Marks** 和 **Total**。我们的 Student 类实现了这两个特性。由于 student 类扩展了这两个特性,因此它能够访问这两个方法 - **DisplayMarks** 和 **DisplayTotal**。
class Example { static void main(String[] args) { Student st = new Student(); st.StudentID = 1; println(st.DisplayMarks()); println(st.DisplayTotal()); } } trait Marks { void DisplayMarks() { println("Marks1"); } } trait Total { void DisplayTotal() { println("Total"); } } class Student implements Marks,Total { int StudentID }
上述程序的输出将是:
Total Marks1
扩展特性
特性可以扩展另一个特性,在这种情况下,必须使用 **extends** 关键字。在以下代码示例中,我们使用 Marks 特性扩展了 Total 特性。
class Example { static void main(String[] args) { Student st = new Student(); st.StudentID = 1; println(st.DisplayMarks()); } } trait Marks { void DisplayMarks() { println("Marks1"); } } trait Total extends Marks { void DisplayMarks() { println("Total"); } } class Student implements Total { int StudentID }
上述程序的输出将是:
Total
广告