概述
Java和Groovy的区别
一 权限修饰符回顾
强调: groovy中'不指定修饰符'默认的修饰符就是'方法-->public;变量-->private';而'java'不指定修饰符,默认是'default'
1)验证方式:通过编译的'class字节码文件'来验证
核心: public static void main -->'psvm'了解各个位置
备注: 没有找到合适的图说明groovy的'修饰符',Groovy没有'default'的修饰;或者说'defaault'修饰和'Java'有差异性
理解上: 把default'删除即可'
二 类和对象
++++++++++++++++'回顾Java特性'++++++++++++++++
1)类和对象-->理解:抽象模板和具体实例
2)类的特性-->封装(属性和行为)-->代码表现(变量和方法)
3)继承、实现、接口 -->'MOP'
4)Groovy自身的'元编程特性'
(1)GroovyBean
① 传统的JavaBean方式
package wzj.com.groovy.ceshi
// Groovy和Java声明Person类的形式
public class Person {
private String name;
private int age;
private String addr;
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
}
② GroovyBean
1)Groovy Person类
package wzj.com.groovy.ceshi
// Groovy的风格
class Person {
// 关注编译后的'修饰符'类型
String name
int age
String addr
}
2)Groovy测试脚本
package wzj.com.groovy.ceshi
// Test.groovy
def person = new Person()
// 1)解读1-->底层调用setNmae('wzj')方法
person.name ='wzj'
// 2)底层2-->底层调用getName('wzj')方法
println person.name
3)字节码文件
注意: 关于'构造方法',会根据'传入的参数',自动在'字节码文件中'生成对应的'构造方法'
eg: new Person() -->会自动创建'Person()构造方法'
4)结论
1、默认'类的修饰符'为public
2、没有'可见性修饰符'的'字段'修饰符默认是'private',同时会'自动生成'对应的setter和getter方法
3、类'不需要'与它的源文件有相同的名称,但还是'建议采用相同'的名称
③ def 定义变量背后的事情
说明: def'定义'变量,只是声明是一个'动态'类型,用'Object'接收,没有指定修饰符,默认还是'private' -->'变量'
核心: def '等价' Object('类型') --> 表示'类型' -->Java的'多态' -->'编译在左,运行在右' -->'反射'
④ def定义方法背后的事情
def method() {}
++++++++'编译后等价的'++++++++
public Object method() {}
结论: 没有'指定'修饰符,方法是'public'修饰
⑤ static背后的事情
++++++++'不指定修饰符情况'++++++++
1)被static关键字修饰的'方法'-->'类方法(类的成员方法)'-->默认是'public'
2)被static关键字修饰的'变量'-->'类属性(类的成员变量)'-->默认是'private'
3)特点:'不需要依赖于对象'来进行访问,只要类被加载了,就可以'通过类名去进行'访问
⑥ final背后的事情
当你把一个'属性'声明成 'final' 的时候,就'不能'再给该属性'赋值'了
final age
+++++++'等价方式'+++++++
private final age
注意:只有 'getAge()'方法,'没有' set 方法
⑦ 强规则
Groovy语言还有一个规则: 如果你'主动声明'一个属性为" private "、" public "或" protected ",那么你只是'声明了一个属性',这意味着你'要自己写'属性的" set "和" get "方法
比较'意外'的一点: 似乎修饰符不影响'访问'和'设置'属性
1)定义Student的Groovy类
2)定义测试脚本
3)查看编译的字节码文件
4)结果展示
⑧ 构造方法
说明: 不需要给Groovy'编写构造器',就'可以使用'构造器
原则: Groovy如果存在'无参构造',那么可以在'创建对象'的时候传入一个'map';键为属性名,值为赋值结果
效果:根据'成员属性'任意传入参数
2)思考
思考: 如果'手动创建'一个'有参的构造方法'呢?还能传入任意的参数吗?
效果: 编译器'不会报错',但无法通过'map'的形式传入参数,而后获取属性('null')
// 测试脚本
package wzj.com.groovy.ceshi
def student = new Student(name: 10)
print student.name
⑨ 最佳实践
(3) Groovy自动导入的包
最佳实践
static方法可以在方法声明中没有返回值,默认会加上def
如果没有return,则以最后一行为返回值,如果最后一行没有含义,返回null
参数列表可以不指定类型,默认为def
最后
以上就是贪玩哈密瓜为你收集整理的Groovy(七)GroovyBean的全部内容,希望文章能够帮你解决Groovy(七)GroovyBean所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复