A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周万谋 中级黑马   /  2012-10-28 09:56  /  2043 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 周万谋 于 2012-11-2 22:33 编辑

之前一直对属性和字段不太清楚,只知道经常这样写:变量(字段),不懂为什么要有字段和属性之分,求解。

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

6 个回复

正序浏览
焦晨光 发表于 2012-10-28 10:39
存在一个javabean
public class Person {
    private String name;

学习了!
原来只知道属性和字段是一样的,看了这个才知道,属性与JavaBean有关。
回复 使用道具 举报
Java中的属性:通常可以理解为get和set方法。
而字段:通常叫做“类成员”。

这两个概念是完全不同的。

属性只局限于类中方法的声明,并不与类中其他成员相关。例如:
void setA(String s){}
String getA(){}
当一个类中拥有这样一对方法时,我们可以说,这个类中拥有一个可读写的a属性(注意是小写a)。如果去掉了set的方法,则是可读属性,反之亦然。

类成员(字段),通常是在类中定义的类成员变量,例如:
public class A{
private String s = "123";
}
我们可以说A类中有一个成员变量叫做s。
回复 使用道具 举报
2楼的分析很精辟,谢谢
回复 使用道具 举报
JAVA中的字段(即属性)是由  1.实例变量(非static修饰的变量)  2.静态变量(类变量 由static修饰) 组成的

注意:常量我习惯把它称为 常量变量, 也可以归到上两种,常量一般用static修饰。
回复 使用道具 举报
存在一个javabean
public class Person {
    private String name;
    private String age;
   
    public Person(String name, String age) {
        super();
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
}
我们可以说,这个类有name,和age属性;
也可以说,这个类有name和age字段
属性和“字段” 一样

存在一个Student类
class Student{
  private String name="aaa";
  prvate String age="bbb"
}
我们可以说,这个Student类的name字段的值为aaa age字段的值为bbb
但是你说他有name属性和 age属性也行,但是不规范,属性是相对javabean而言的,有set和get方法就称之为什么属性

总之,属性和字段都是指的是类中的成员变量,如果这个成员变量有自己的set和get方法,我们就可以称这个成员变量为属性
如果没有set和get方法,我们就称之为字段。大同小异。


评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

回复 使用道具 举报
Java中的属性,通常可以理解为其属名性时根据get和set方法名得出的。

其规则是:去掉get或set后其剩余的字符串,如果第二个字母是小写的,则把第一个字母也变成小写

getAge---->age

getCPU---->CPU

而字段,通常叫做“类成员”。
这两个概念是完全不同的。
属性只局限于类中方法的声明,并不与类中其他成员相关,属于javabean的范畴。例如:
void setA(String s){}
String getA(){}
当一个类中拥有这样一对方法时,我们可以说,这个类中拥有一个可读写的a属性(注意是小写a)。如果去掉了set的方法,则是可读属性,反之亦然。
比如有下面这个类:
public class Person {
private int x;
public int getAge(){
  return x;
}
public void setAge(int age){
  this.x=age;
}
}

当我操作这个类时,比如调用getAge()方法时,我们要说是获得age属性,调用setAge方法时要说设置age属性,因为对我们来说x字段是私有的,我们操作该Person类时根本看不到有这个x字段

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马