java的setter、getter 以及python的@property函数
来源:互联网 发布:淘宝开店一件代发 编辑:程序博客网 时间:2024/05/17 23:36
关于python的装饰器的相关知识,可以查看廖雪峰的blog:
http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318435599930270c0381a3b44db991cd6d858064ac0000
然后理解@property装饰器的时候,廖雪峰用了一些java的术语导致我很难理解,比如getter和setter。我百度了一些,找了相关资料:
在java中经常是声明一个私有的变量,然后给出他们的公共的getter和setter方法。比如:private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
请问:这样做的好处是什么?为什么要定义getter和setter呢。直接public String name;这样不是省去很多麻烦吗?
注:希望真正懂的给个明确的答案。在浏览一些技术方面的帖子的时候发现有些人根本就不懂(也许是只学了点皮毛),就那里里信口开河胡说乱说。收起
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
请问:这样做的好处是什么?为什么要定义getter和setter呢。直接public String name;这样不是省去很多麻烦吗?
注:希望真正懂的给个明确的答案。在浏览一些技术方面的帖子的时候发现有些人根本就不懂(也许是只学了点皮毛),就那里里信口开河胡说乱说。收起
jinzhu0216 | 浏览 25312 次
推荐于2016-01-01 02:21:44最佳答案
用代码讲解一下:public class Student {String name;public String getName() {return name;}public void setName(String name) {this.name = name;}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubStudent s1=new Student();s1.setName("小明");System.out.println("学生的姓名为:"+s1.getName());}}上面的意思是创建一个学生类,声明一个name变量,并给了它getter和setter方法。先说setter方法,刚开始创建name变量时没有赋值,后面用这个方法给他赋值“小明”再说getter方法,name变量有了值“小明”后就可以用这个方法把它调出来。
事实上getter和setter的好处有很多。 1、debug。当你发现对象的某个属性数据总是被莫名的修改。你需要找到究竟哪些地方。如果直接将属性写成public的进行赋值。你就不得不在所有用到这个属性的地方下断点。这几乎是很难办到的。 2、getter和setter意味着读写分离。例如只读可以只暴露getter 3、在没有注解时,用来标记哪些属性才能被外部读写。 字数有限,就说3点
然后可以对照廖雪峰的blog关于@property的章节理解到底什么事@property
0 0
- java的setter、getter 以及python的@property函数
- property属性的setter、getter方法
- OC 中"烦人"的小特性之getter和setter以及property编译指令
- 有关js 的 defineProperty函数 getter setter
- Object-C @property使用指定的setter和getter
- 令人迷惑的 setter 和 getter 和 @property 和@synthesize
- Getter / Setter 的滥用
- ES5的getter/setter
- 关于JAVA的getter和setter问题
- setter,getter,@property,@synthesize
- Webkit IDL中自定义[命名]属性的获取(Getter)以及设置(Setter)函数
- 构造函数、getter和setter方法以及后两者的意义
- Java学习笔记之三--类和对象以及Setter和Getter方法的使用
- myeclipse重写setter、getter、toString以及重构类的快捷键
- 对getter / setter的认识
- Swift的setter与getter
- lombok的@Getter和@Setter
- JS的getter和setter
- 改进zhang方法图像细化(单像素)
- Windows CMD命令行编程总结
- QT+SQLite 判断表中是否含有指定字段
- 2017美国数学建模ICM F题(政策)翻译 迁移到火星
- 斜率优化
- java的setter、getter 以及python的@property函数
- web服务器之mini_httpd搭建方法
- gstreamer播放器,playbin2插件使用,适合新来gstreamer
- 克服跨洋网络延迟,使用Docker Hub Mirror加速Docker官方镜像下载
- [bsoj1035] 点和线
- maven类型的web工程本地调试办法
- C#打开文件 ,文件夹
- 【codeforces 758B】Blown Garland
- Android多线程间通信