Groovy笔记(7)_Class

本文介绍了 Groovy 中类的定义、属性与方法的使用、构造函数与 toString 方法的覆盖等基本概念,并通过实例展示了继承与抽象类的应用。
<p><span style="font-size: x-small;"><strong><span style="font-size: medium;">Groovy 类例子</span></strong></span></p>
<p></p>
<p>1、class Toy{</p>
<p> def toyName //会在java代码中声明为私有的,并提供set和get</p>
<p> def unitPrice</p>
<p>def method(){ //此方法在生成的java代码中返回object </p>
<p> println 'Invoke method!'</p>
<p>}</p>
<p> String toString(){"${toyName}"}</p>
<p> }</p>
<ul>
<li>def toy = new Toy(toyName:'toy1',unitPrice:'100') //自动回对应属性赋值</li>
<li>println "Toy ${toy.toyName},unit price :${toy.unitPrice}"</li>
<li>toy.method()</li>
<li>prinltn toy //会调用toString方法</li>
</ul>
<p>2、Groovy类分析</p>
<ul>
<li>类和方法默认是public的</li>
<li>类属性是私有的</li>
<li>变量与方法使用动态属性</li>
<li>Groovy 自动提供构造函数、构造函数接受一个名-值对的映射,名称-值对与类的属性相对应。不用初始化对象的每个属性</li>
<li>生成标准的setter和getter方法</li>
</ul>
<p></p>
<ul>
<li>可以通过 . 语法间接地访问属性</li>
<li>在进行属性操作时总是会调用setter和getter方法,即使直接通过 . 语法访问属性也是如此</li>
<li>打印对象,在java中这样只会输出所有对象默认的toString()实现, 包.类名@hashcode</li>
<li>覆盖默认的toString()实现,让输出效果更好</li>
<li>String toString(){"${toyName}"}</li>
</ul>
<p></p>
<p><span style="font-size: medium;"><strong>继承</strong></span></p>
<p></p>
<p>1、使用Java的继承机制。</p>
<p>2、支持方法覆盖于重载即多态。</p>
<p> class Father{</p>
<p> def name</p>
<p>String toString(){name}</p>
<p> }</p>
<p>class Son extends Father{</p>
<p>def score</p>
<p>String toString(){super.toString()+"."+score}</p>
<p> }</p>
<ul>
<li>def f =new Father(name:'clat')</li>
<li>println f // clat</li>
<li>def s = new Son(name:'escaflone', score:'100')</li>
<li>println s // escaflone:100</li>
</ul>
<p></p>
<p></p>
<p><span style="font-size: medium;"><strong>抽象类与接口</strong></span></p>
<p></p>
<p>1、Groovy 动态类型的特征,实际上使抽象类与接口变得不是很必要了</p>
<p>2、抽象类提供应该由子类延迟实现的方法即抽象方法。</p>
<p>3、abstract class AbstractClassDemo</p>
<p>{</p>
<p> def abstract doSomething()</p>
<p> //抽象类也可以包含具体的方法</p>
<p> String toString(){println 'Abstract class'}</p>
<p> }</p>
<p> class AbstractClassSon extends AbstractClassDemo{</p>
<p> def doSomething(){}</p>
<p>}</p>
<p></p>
<p>4、接口作为 子类必须遵守的协议,要求子类必须实现所有的方法,使用Java相同的机制</p>
<p> interface iToyService{</p>
<p>def addToy()</p>
<p> def deleteToy()</p>
<p> def updateToy()</p>
<p>def selectToy()</p>
<p> }</p>
<p>class ToyServiceimpl implements iToyService{</p>
<p> def addToy(){}</p>
<p> def deleteToy(){}</p>
<p> def updateToy(){}</p>
<p> def selectToy(){}</p>
<p>}</p>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值