zoukankan      html  css  js  c++  java
  • groovy普通方法、抽象方法、接口、trait

    /**
     * Created by Jxy on 2018/12/21 14:07
     * trait关键字
     * 声明trait中的方法和任何常规方法一样
     * trait声明抽象方法需要在实现类中实现
     * 也可以有私有方法 Those methods will not appear in the trait contract interface
     * groovy接口
     * trait也可以实现接口
     */
    
    /*
    普通方法
     */
    trait FlyingAbility {
        String fly() { "I'm flying!" }
    }
    class Bird implements FlyingAbility {}
    def b = new Bird()
    assert b.fly() == "I'm flying!"
    println(b.fly())
    /*
    抽象方法
     */
    trait Greetable {
        abstract def name()
        def getName(){
            "hello , ${name()}"
        }
    }
    class GreetableImpl implements Greetable{
    
        @Override
        def name() {
            "jser"
        }
    }
    def p = new GreetableImpl()
    println(p.getName())
    
    /*
    接口
     */
    interface Named {
        String name()
    }
    trait Greetable1 implements Named {
        String greeting() { "Hello, ${name()}!" }
    }
    class Person1 implements Greetable1 {
        String name() { 'Bob' }
    }
    
    def p1 = new Person1()
    assert p1.greeting() == 'Hello, Bob!'
    assert p1 instanceof Named
    assert p1 instanceof Greetable1
    
    /*
    公共字段
    避免钻石问题
     */
    trait Named1 {
        public String name
    }
    class Person2 implements Named1 {}
    def p2 = new Person2()
    p2.Named1__name = 'Bob'
    println(p2.Named1__name)
  • 相关阅读:
    c语言学习笔记(6)——for和while循环
    c语言学习笔记(5)——进制
    c语言学习笔记(4)——流程控制
    ckeditor复制粘贴word
    java上传超大文件
    plupload上传整个文件夹
    vue+上传文件夹
    php+上传大文件
    web+文件夹上传
    2G以上的大文件如何上传
  • 原文地址:https://www.cnblogs.com/jsersudo/p/10155899.html
Copyright © 2011-2022 走看看