在Java类中对变量或方法的访问有哪些访问控制的关键字?他们各有什么作用,举例说明。

如题所述

java类声明的完整格式 [public][abstract|final]class ClassName[extends SuperClassName][implements InterfaceNameList]{……}
其中修饰符public表示任意类均可以访问这个类,如果没有public,则只有与该类定义在同一个包中的类才可以访问这个类。abstract表示这个类是个抽象类。final表示无法被任何人继承的,那也就意味着此类在一个继承树中是一个叶子类,并且此类的设计已被认为很完美而不需要进行修改或扩展。extends关键词表示类继承了以SuperClassName为类名的父类,implements关键词表示类实现了InterfaceNameList中列出的各个接口。

java变量的完整的声明格式 [public|protected|private][static][final][transient][volatile]type varibleName;
其中修饰符public表示该方法没有访问限制,protected只能被自身或者子类(在同一个包或不在同一个包)以及同一个包下的其他类可以访问到,private只能被自身访问。如果不加任何权限限定成员则是默认访问权限default,即只能被和这个类在同一个包中的类访问。访问权限时在类级别上的而不是对象级别。static表示这个变量时类变量3中初始化方法方法一:在声明中赋值 方法二:在构造函数中赋值方 法三:初始化块 。final表示这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变。其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中。这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值。transient用来声明一个暂时性变量,在默认情况下,类中所有变量都是对象永久状态的一部分,当对象被保存到外存时,这些变量必须同时被保存,用transient限定的变量指示JAVA虚拟机,该变量并不属于对象的永久状态,从而不能被永久存储。volatile修饰的变量,在被多个线程共享时,系统将采取更优化的控制方法提高线程并发控制方法提高线程并发效率。

java方法的完整的声明格式[<accessLevel>][static][final|abstract][native][synchronized]<return_type><name>([<argument_list>])[throws<exception_list>]{<block>}
其中accessLevel与成员变量相同。static限定它为类方法,而实例方法不需要static限定词。abstract表明方法时抽象方法,没有实现体。final指明方法布恩能够被重写。native表示方法用其他语言实现。synchronized用来控制多个并发线程对共享数据的访问。throws<exception_list>表示可能抛出的异常。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-08
public protected private 为了积分 给你写个例子
比如 class hello{
public int aaa;
private int bbb ;
protected int ccc ;

public void set bbb(int b){
this.bbb = b ;
}
}
public就是公开的喽 你可以通过 hello.aaa = 15 ; 类似这样的赋值
private就不可以地 需要类内部的public方法来控制 hello.setbbb(15);这样的
protected可在子类中使用的
什么都没有的话,行为类似private,区别是在同一个包下都能调用,作用范围比private大

参考资料:this bbb

本回答被提问者采纳
第2个回答  2011-03-08
有public,表示任何地方都可以访问,不写和internal一样,表示同一个包内可以访问,protected表示只用本类方法及继承类方法可以访问,private表示只有本类方法可以访问。
根本没有楼上说的friendly这个关键字,我想楼上要说的是internal。
第3个回答  2011-03-08
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不写时默认为friendly
第4个回答  2011-03-09
public 谁都能调用(除非不是一个工程下的)
private 只有本类可以调用 他的儿子们也不可以
default 默认的 比如: int i = 0; 虽然没有写default int i = 0; 但是java默认写上了。
protect 最多允许儿子们可以调用 其他不想干的不能调用
相似回答