怎么理解java中数据成员(字段)?

heqiyu34 2010-11-27 11:07:13
例如,自己写的一段程序如下:

public class Retangle{
public static void main(String[] args){
Retangle h=new Retangle(10,5);
h.area();
h.perimeter();
}

public Retangle(int a,int b){
length=a;
width=b;
}

private void area(){
int s;
s=length*width;
System.out.println("面积为:"+s);
}

private void perimeter(){
int c;
c=2*(length+width);
System.out.println("周长为:"+c);
}

private int length,width;
}

如果我把最后的“private int length,width;”删掉,则提示找不到符号length与width,所以我认为最后的那句相当于给变量指定数据类型,如果是这样的话那我一样可以不在area方法里指定s的数据类型而放到最后的数据成员(字段)中指定了?但是这样的话我就很不明白最后这个数据成员(字段)有什么作用了。请大家指教。
...全文
266 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jsnewland 2010-12-06
  • 打赏
  • 举报
回复
你需要看书
ellenyulin 2010-12-05
  • 打赏
  • 举报
回复
很多书必讲内容啊 看书吧~
shidili2008 2010-12-01
  • 打赏
  • 举报
回复
这个问题就是局部变量与全局变量的理解吧 再看看书吧。。
qybao 2010-11-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 heqiyu34 的回复:]
如果我把最后的“private int length,width;”删掉,则提示找不到符号length与width,所以我认为最后的那句相当于给变量指定数据类型,如果是这样的话那我一样可以不在area方法里指定s的数据类型而放到最后的数据成员(字段)中指定了?但是这样的话我就很不明白最后这个数据成员(字段)有什么作用了。请大家指教。[/Quote]

1 删掉private int length,width; 变量length和width就没有声明,没有声明就不能使用,如果不作为成员变量,那么area方法等就不知道length和width的存在,也就不能直接计算。(可以通过参数传进来计算,但那就不属于封装,类也没意义了)
2 s可以放到数据成员,实例成员变量的作用域是整个类实例,也就是类的所成员方法都能使用,如果是在area里声明,作用域只在area方法里
3 成员变量一般有着一定的意义,一个长方形,长和宽应该是必要属性,只有知道长和宽才能确定一个长方形,至于面积和周长,完全可以通过长和宽来计算,也就说不是必要属性,所以没必要把s定义为成员变量
my0510520 2010-11-30
  • 打赏
  • 举报
回复
private修饰的变量、方法只有在本类中使用,数据成员即全局变量,整个类都可以访问、修改

s和c是临时变量,在一个方法中调用即可,没必要设置成全局,而length,width是两个方法都要调用,所以要全局

还有你的代码很不规范!!!

public class Test {
//全局变量在最上
int i;
//方法在后
public Test(){

}
//程序入口最后
public static void main(String[] args) {
System.out.println();
}
}
龙心 2010-11-30
  • 打赏
  • 举报
回复
[如果我把最后的“private int length,width;”删掉,则提示找不到符号length与width]找不到是因为你没有定义这两个变量,一般先定义后使用,写在最后这种写法也不好,应该写在使用前面。

[如果是这样的话那我一样可以不在area方法里指定s的数据类型而放到最后的数据成员(字段)中指定了?]
你可以这样做,在area方法里定义s的话,s就是局部变量只可以在area方法内部使用。如果像length,width一样定义在外部的话就成了全局变量,在类内部都可以使用。

另外使用变量有一个原则,先定义后使用。
missliujun 2010-11-30
  • 打赏
  • 举报
回复
去看一下视频
nmglhq2010 2010-11-29
  • 打赏
  • 举报
回复
初学时很多人都这么认为,以后就慢慢懂得了
michaellufhl 2010-11-28
  • 打赏
  • 举报
回复
Good luck
wyang1991 2010-11-28
  • 打赏
  • 举报
回复
类的属性就相当于是一个人有名字、年龄等特征一样,如果连这个都没有,你怎么给这个人进行取名等操作呢???
mopishv0 2010-11-28
  • 打赏
  • 举报
回复
类是一系列事物的抽象
数据成员代表这一些列事物的属性
比如人类 有姓名 性别 年龄
然后人类会有一些行为(方法)
比如军训时正步走
我们需要知道走几步 这是由外部命令得到的 所以放在方法的参数里面
我们在执行方法的时候需要一些临时变量 比如我一步走多远 这和方法有关 (比如正步走和散步的步长是不同的) 所以这些是方法内的临时变量 而不是人类的属性
所以一个变量 是不是类的属性 取决于你抽象的目的 s可以是形状的固有属性 也可以是由固有属性计算而来 都说的捅 主要LZ要明白 自己为什么需要把他抽象成为属性 为什么不 会有什么影响 会不会影响扩展

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧