在Java中成员变量为什么要设为private?

作者&投稿:索蓝 (若有异议请与网页底部的电邮联系)
为什么Java程序中习惯把成员变量定义为private,把成员方法定义为public?好多例子都是这样子。。~

定义为private是为了保证安全性撒,当然你也可以定义为protect或者public,具体你可以去看看
public,private,protected 区别,http://blog.csdn.net/oonukeoo/article/details/4552109

其实说得明白点吧,这只是java类(特别的很多时候是一个javabean)的两个方法,以提供对某个变量(字段)设置与访问的两个入口,在很多时候也正如你说,跟定义成public是没有两样的,具体的原因在于:
(1)由于很多框架都是调用这两个方法来实现沟通,这是一种习惯了。
(2)get/set方法也不一定只是简单的作一个赋值,或一个返回值吧,在这里可以作一些权限的控制,比如不是每个角色都可以赋值的。再比如返回的值不一定是值本身,可以是经过处理了的,比如加密,这用public定义是不能作到的。

private 是私有的。那为什么要有private呢?
回答:
因为java中封装要用到,private只能在类的内部可以用,就是子类也不可以用。哪么就做到了完全封装,一开始你可能不懂,是因为你没学到,java的封装特性。哪么都private了要怎么在外面用呢,有办法就是通过设置get和set2个方法来设置。如果你想现在知道哪么请你先大概浏览下。封装那张的内容。现在你的工作是记住有一个private,当你学到他的时候就会了解了。学程序的时候,一开始会接触很多,都是没头没尾的,老师也说记住就得了,哪么就记住把。后面就会明白了。不要钻牛角尖啊。这是大忌。回答完毕,希望学习顺利!

不一定是要设成private的。

但是在数据bean,也叫VO bean里,一般是设成private的,然后会提供set和get方法,供其他类赋值和取值。这样更符合面向对象的规范。

另外,假如你有一个成员变量 电话号码 telNum,很显然,别的类只能去取得他的值,而不能改变他的值,那么就就可以仅提供getTelNum()方法,而不提供相应的set方法。 如果你的telNum 是public的,那么其他类都可以去改变他的值了

private 是私有的只能在当前类里使用
不加修饰的是默认的package,详情如下:
Java中public、package、protected、private的访问权限如下表所示
注:package权限就是默认的访问权限,也就是default package 只能被同类或者同一个包中的类访问
prtected 只能被同类,同一包中的类,或者不同包中的子类访问
同一个类 同一个包 不同包的子类 不同包的非子类
public 可访问 可访问 可访问 可访问
protected 可访问 可访问 可访问
package 可访问 可访问
private 可访问

有些变量不能或者你不想被你的程序调用者直接看到(调用),
而是提供一些方法,比如get、set,来让他们调用使用,
或者你都不想给他们改变,只是自己内部使用,那就get、set都不提供,
那他们都看不到了(不能获取、改变);
public就是你允许调用者可以随意更改对象的此变量值

说正式点这叫实现数据封装。说通俗点就是不想让别人用或者修改你的数据,比较安全。


以程序为例,讲解java中包,类,构造函数,成员变量,成员方法,重载,接口,SU...
成员变量(field)是没有定义在代码块(包括初始化块、成员方法)中的变量。成员变量是类变量还是实例变量取决于在其声明中是否使用了static关键字。类变量在声明是用了static关键字,它的另一个名字叫静态变量、静态成员变量(static field) 。实例变量是在声明时没有使用static关键字的成员变量,它的另一...

java中什么是成员变量、局部变量???
定义在类中的变量被称为成员变量,定义在方法中的变量被称为局部变量。一、成员变量 成员变量是指定维度的成员变量,用于标识某个维度成员。由Services内部使用的值,以标识某个维度成员。MemberKeyColumn属性指定维度的成员变量。例如,1到12之间的某个数字可以是相应于年中的某个月的成员变量。二、局部...

java中的成员变量、类变量,成员方法、类方法各是什么?
成员变量:成员变量是指定维度的成员变量,用于标识某个维度成员。由 Analysis Services 内部使用的值,以标识某个维度成员。MemberKeyColumn 属性指定维度的成员变量。例如,1 到 12 之间的某个数字可以是相应于年中的某个月的成员变量。类变量:在java中,类变量(也叫静态变量)是类中独立于方法之外的...

java什么是成员变量和局部变量
1、成员变量是独立于方法外的变量,局部变量是类的方法中的变量 1)、成员变量:包括实例变量和类变量,用static修饰的是类变量,不用static修饰的是实例变量,所有类的成员变量可以通过this来引用。2)、局部变量:包括形参,方法局部变量,代码块局部变量,存在于方法的参数列表和方法定义中以及代码块中。

java中的成员变量、类变量,成员方法、类方法各是什么,怎么区分,_百度知...
成员变量:包括实例变量和类变量,用static修饰的是类变量,不用static修饰的是实例变量,所有类的成员变量可以通过this来引用。类变量:静态域,静态字段,或叫静态变量,它属于该类所有实例共有的属性。而且所有的实例都可以修改这个类变量的值(这个类变量没有被final修饰的情况),而且访问类变量的时候...

成员变量与局部变量?
从语法形式上看:成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数;成员变量可以被 public,private,static 等修饰符所修饰,而局部变量不能被访问控制修饰符及 static 所修饰;但是,成员变量和局部变量都能被 final 所修饰。从变量在内存中的存储方式来看:如果成员变量是使用static修饰...

什么是java的局部变量、成员变量和全局变量?
成员变量个是类内部;局部变量是定义其的方法体内部(或者方法体内部的某一程序块内——大括号,主要看定义的位置)。成员变量可以不显式初始化,它们可以由系统设定默认值;局部变量没有默认值,所以必须设定初始赋值。在内存中的位置也不一样。成员变量在所在类被实例化后,存在堆内存中;局部变量在...

JAVA 类变量和成员变量怎么理解
成员变量就是类中的属性。当new对象的时候,每个对象都有一份属性。一个对象中的属性就是成员变量。在类内部,任何地方都可以访问成员变量。类变量是被static修饰的属性。作用范围在类变量定义之后。class Person{ \/\/成员变量,实例变量 String name;\/\/静态变量,类变量,所有对象共享的属性用static修饰 ...

什么是成员变量和局部变量 java
③成员变量有默认初始化值。局部变量:①局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。②局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。③局部变量没有默认初始化值 在使用变量时需要遵循的原则为:就近原则 首先在局部范围找,有就使用;接着在成员位置找。

JAVA中,什么是对象类型的成员变量? 什么是基本类型的成员变量?
java成员变量和方法 成员变量:在类体的变量部分中定义的变量,也称为属性。我们先来看一个Clothes类的成员变量:package ch05.sample;public class Clothes { String id; \/\/实例变量 private String colorType; \/\/实例变量 private int size; \/\/实例变量 private static String depart; \/\/类变量 fin...

吐鲁番市13344286974: Java接口中的成员变量为什么必须是public static final? -
乐正澜单硝: 所以可以直接省略修饰符:String param="ssm";//变量需要初始化??为什么接口要规定成员变量必须是public static final的呢???答:首先接口是一种高度抽象的"模版",,而接口中的属性也就是'模版'的成员,就应当是所有实现"...

吐鲁番市13344286974: 为什么说java成员变量设置的一个原则,就是尽可能设置成最小的访问权限. -
乐正澜单硝: java的类是为了封装对象的,并且有意识的把一些重要的方法或者变量给予隐藏.例如设置为private私有变量.然后在类里设置get和set方法去获取和改变这个私有的变量..这样做的好处就是提高了程序的安全性,防止外界直接访问该变量.

吐鲁番市13344286974: java里成员变量为什么不用赋值 -
乐正澜单硝: Java类的成员变量在被修饰为public、protected和包访问权限时,可以在不同层次上直接给成员变量赋值.但是,赋值的前提是:必须存在持有成员变量的对象.而对象的初始化必须调用构造函数,所以构造函数是必不可缺的. 至于使用构造函数还是直接声明时给成员变量赋值,那就要看情况而定.如果创建的这个对象是不可变的,那么就必须使用构造函数初始化成员变量,反之,就无所谓.另外,直接给成员变量赋值,Java是不推荐的,因为这样会破坏它的封装性. 所以,建议在构造函数或提供setters方法对变量赋值.

吐鲁番市13344286974: java里面成员变量可以直接赋值,为什么还要构造函数啊? -
乐正澜单硝: 构造函数试用于动态创建对象.基于对象编程的思想,是不赞成直接给类里面的变量直接赋值的.

吐鲁番市13344286974: java接口中为何要定义成员变量? -
乐正澜单硝: 接口是最顶级的类了,接口中的所有方法都是没有实体的,接口有什么用呢?在实现接口的时候,可以具体实现方法的主体,但是,如果实现一个接口,那么这个接口里面的所有方法都要实现 OK,知道这些了,定义成员变量?因为,java中没有多重继承,只可以实现多个接口,而有很多的天然属性,也就是static final这种类型数据,我们通过实现多个接口,就可以获得各种不同的天然属性.在实现类中具体变量没有限制,只要是数据类型匹配就可以.

吐鲁番市13344286974: java中成员变量和局部变量的区别 -
乐正澜单硝: java易混淆概念之类变量、实例变量、局部变量 类变量、实例变量、局部变量类变量是类中独立于方法之外的变量,用static 修饰.实例变量也是类中独立于方法之外的变量,不过没有static修饰.局部变量是类的方法中的变量.看下面的伪代码...

吐鲁番市13344286974: java中成员变量与全局变量的区别是什么? -
乐正澜单硝: 成员变量也叫类的属性,一般带有访问控制属性的,而全局变量虽然也有类的属性,但全局变量严重影响了封装和模块化,一般的全局变量前面要加上static和fina属性其中,static...

吐鲁番市13344286974: 初学java 关于成员变量的问题 -
乐正澜单硝: 你这个是一种封装保护实例变量的形式 其他的类创造出你这个类的对象的时候不能直接操作变量 只能通过get和set方法来操作变量 比如你这个类的2个成员变量是public的话 我有一个你这个类的实例比如叫a 我可以直接 a.Name=“111”; 这样直接修改实例变量的值如果是你代码的情况的话 上边的语句就不能通过编译想改变Name的值的话必须这么写 a.setName("111"); 这样 这只是一种用法 你只要记住 只要不是定义在方法里的不是static变量都是成员变量 除了标记为static的方法都是成员方法 标记了static的变量和方法它们输入类本身

吐鲁番市13344286974: JAVA的成员变量使用
乐正澜单硝: 要知道,java中静态方法或静态类中不能访问非静态成员,因为静态成员在程序一开始运行的时候就已经初始化了,而你的实例成员要通过new创建实例以后才能访问 main方法是静态方法 所以只能访问静态变量,或静态方法,如果你在ClassA中用static修饰你的a变量和method问题就可以解决. 这块知识点建议看下讲类初始化过程的章节

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网