Mixin-混入
Groovy也遵守Java的单继承特性,一个类只允许直接继承一个类。Groovy这这方面解决了Java的的不足,允许利用mixin将多个类的实现拉进来,从某一种意义来说,变相实现了多继承。”Minin”是Mix和in的组合,即混入进来的意思;
Mixin是一种运行时能力,可以将多个类的实现引入进来,让引入类也可以调用混入的这些类中的方法;混入后,当对象调用一个方法时,首先会去混入的类中查看是否有符合的方法,有则调用,没有则去引入类中查看;当混入多个类时,最后混入的类的方法优先级最高;混入后,引入类也就具有混入类的行为,即可以调用混入类的方法
向类中混入
混入方式写法一:注解混入
利用@Mixin注解语法,将类注入到引用类中如:@Mixin(混入类名);如果想某个类中混入多个类,通过向注解提供有多个类名组成的列表如:@Mixin([类名1,类名2,….])
class Friend {
def listen(){
"$name is listenning as a friend"
}
}
class Person {
int id
String name
def void test(){
println "============test()====================="
}
//def listen(String content){
// "调用自己方法中的listen()"
//}
}
调用代码:
def person = new Person(id: 10,name: "leslie")
println person.listen()
println person.listen("hello world")
这里传Person对象后调用

Groovy的Mixin机制允许在不违反Java单继承原则的情况下,实现类的多态扩展。通过注解、静态初始化块和运行时动态混入,可以将多个类的功能引入到目标类中。混入后,对象在调用方法时会优先查找混入类,实现了类似多继承的效果。混入的优先级取决于混入的顺序,最后混入的类方法优先级更高。此外,还可以选择向类实例而非类本身进行混入,这种混入只影响特定实例。
最低0.47元/天 解锁文章
370

被折叠的 条评论
为什么被折叠?



