gpt4 book ai didi

groovy - 在 Groovy 中扩展类和实现 trait 有什么区别?

转载 作者:行者123 更新时间:2023-12-03 20:19:45 26 4
gpt4 key购买 nike

我刚刚开始使用 Groovy,我正在尝试使用特征。下面我粘贴了来自 www.programmingbydoing.com 的学习练习当我开始学习 Java 时,这些练习非常有用,所以我也使用 for Groovy。我完成了这门课然后想,为什么我不只是扩展一个类而不是使用 trait?我很难过,所以如果有人可以帮忙,在 Groovy 中扩展类和实现 trait 有什么区别?

  class HowOldAreYou implements AskingAndAnswering {
/**
*
* @param args
*/
static void main(args) {
def name = AskName()
def age = AskAge(name)
if (age < 16) result "You can't drive yet $name"
if (age < 18) result "You can't vote yet $name"
if (age < 25) result "You can't rent a car yet $name"
else if (age > 25) result "You can do anything that is legal $name"
else result "That's an unusual age $name!"
}
/**
*
*/
trait AskingAndAnswering {
static def keyboard = new Scanner(System.in)
static String AskName() {
println "What is your name?"
def name = keyboard.next()
}
static int AskAge(name) {
println "\nOk, $name How old are you?"
int age = keyboard.nextInt()
}
static void result(answer) {println "\n $answer"}
}
}

最佳答案

Trait 不是 Groovy 特有的。这是面向对象编程“理论”中的一个概念,很多语言都实现了这个概念。

“理论上”,一个 Trait 不是一个类。它不代表“一件事”,而是代表一种“能力”或“行为”。它是一组提供能力的方法和状态。

这种能力可以应用于一个类(“一个事物”),一个类可以有多个能力(可以使用多个特征)。

在 Groovy 中,这是 class 和 trait 之间的主要实际区别(当然还有 trait 和 classes 之间冲突的解决),但更重要的是考虑 trait 的概念,而不是它的技术实现。

所以,是的,如果你只有一个特征,你可以使用抽象类,但你应该记住你的特征是什么。

关于groovy - 在 Groovy 中扩展类和实现 trait 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35953254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com