黑马程序员技术交流社区

标题: 字段与属性的区别 [打印本页]

作者: 周万谋    时间: 2012-10-28 09:56
标题: 字段与属性的区别
本帖最后由 周万谋 于 2012-11-2 22:33 编辑

之前一直对属性和字段不太清楚,只知道经常这样写:变量(字段),不懂为什么要有字段和属性之分,求解。
作者: 黑马张旭    时间: 2012-10-28 10:19
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字段
作者: 焦晨光    时间: 2012-10-28 10:39
存在一个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方法,我们就称之为字段。大同小异。



作者: 翁鹏    时间: 2012-10-28 10:42
JAVA中的字段(即属性)是由  1.实例变量(非static修饰的变量)  2.静态变量(类变量 由static修饰) 组成的

注意:常量我习惯把它称为 常量变量, 也可以归到上两种,常量一般用static修饰。
作者: 周万谋    时间: 2012-10-28 11:14
2楼的分析很精辟,谢谢
作者: 聆听    时间: 2012-10-28 13:23
Java中的属性:通常可以理解为get和set方法。
而字段:通常叫做“类成员”。

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

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

类成员(字段),通常是在类中定义的类成员变量,例如:
public class A{
private String s = "123";
}
我们可以说A类中有一个成员变量叫做s。

作者: 刘伟平    时间: 2012-10-28 13:29
焦晨光 发表于 2012-10-28 10:39
存在一个javabean
public class Person {
    private String name;

学习了!
原来只知道属性和字段是一样的,看了这个才知道,属性与JavaBean有关。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2