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)
  • 相关阅读:
    智能手表如何救人一命?
    人工智能、机器学习和认知计算入门指南
    PO VO BO DTO POJO DAO的解释
    web UI框架推荐
    面向切面编程AOP
    阿里巴巴java开发规范
    如何理解Spring IOC
    HTML5 3D旋转图片相册
    JSON总结笔记
    轮播图---可以动态添加图片,(封装成一个函数)
  • 原文地址:https://www.cnblogs.com/jsersudo/p/10155899.html
Copyright © 2011-2022 走看看