Groovy入门之五:类

package com.groovy.test

/**
 * 1、类自动生成了构造函数,构造函数接受一个名称-值对的映射,这些名称-值对与类的属性相对应,并且可以不用初始化对象的每个属性
 * 2、Groovy 还生成了标准的 setter 和 getter 方法。总是会调用 setter 和 getter 方法 — 即使直接通过 . 语法访问属性也是如此。
 * 3、在 Groovy 中可以省略 return 语句。Groovy 默认返回方法的最后一行
 * 4、在调用方法时,Groovy 也允许在不带参数的方法上省略括号,不过不建议这么用,如果 Groovy 认为您要访问类的属性而不是方法,那么这样做可能会造成问题
 * 5、只有一个参数或者参数是一个集合时,调用的时候也不需要括号 参考HelloWorld
 * 6、在方法调用前面添加一个 ? 就相当于在调用前面放了一个条件,可以防止在 null 对象上调用方法。
 */
class Song {
	
	def name
	def artist
	def genre
	
	/**
	 * 在 Groovy 中可以省略 return 语句。Groovy 默认返回方法的最后一行
	 */
	String toString(){
		"${name}, ${artist}, ${genre}"
	}
	
	/**
	 * 1、覆盖默认的getGenre()方法
	 * 2、在方法调用前面添加一个 ? 就相当于在调用前面放了一个条件,可以防止在 null 对象上调用方法。
	 * @return
	 */
	def getGenre(){
		genre?.toUpperCase()
	}
	
	/**
	 * 用getXXX方法,即使没有定义XXX属性,在外面也可以用.XXX的姓氏调用该方法
	 * @return
	 */
	def getAutoProperty()
	{
		return "auto property";
	}
}






package com.groovy.test

class SongExample {
	
	static void main(args) {
		song4()
		
	}

	/**
	 * 1、类自动生成了构造函数,构造函数接受一个名称-值对的映射,这些名称-值对与类的属性相对应
	 * 2、可以不用初始化对象的每个属性
	 * @return
	 */
	static song1()
	{
		def sng = new Song(name:"Le Freak",
			artist:"Chic",
			genre:"Disco")
		
		def sng1 = new Song(name:"Le Freak",
			artist:"Chic")
	}
	
	/**
	 * 属性赋值 3中
	 * @return
	 */
	static song2()
	{
		def sng = new Song()
		sng.name = "Funkytown"
		sng.setArtist "Lipps Inc."
		sng.setGenre("Disco")
				
		assert sng.getArtist() == "Lipps Inc."
	}
	
	/**
	 * 方法调用前面添加一个 ? 就相当于在调用前面放了一个条件,可以防止在 null 对象上调用方法。
	 * @return
	 */
	static song3()
	{
		def sng = new Song()
				
		sng.getGenre()
		sng.getArtist()?.toUpperCase()
		
	}
	
	/**
	 * 用getXXX方法,即使没有定义XXX属性,在外面也可以用.XXX的姓氏调用该方法
	 * @return
	 */
	static song4()
	{
		def sng = new Song()
				
		println sng.autoProperty
	}
}

 

转载于:https://my.oschina.net/bruces/blog/673708

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值