java 中public ,protected 和 private的一些文体

相信大家对这幅表一定很熟悉,是关于作用域的:
作用域 当前类 同一package 子类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
我想对这幅图提出几个概念的问题,请各位给我解释一下。
1)在当前类这一栏,4种作用域全都可见,是说在定义这些属性的类中,这些属性是可用的。是这样吧?
2)第三栏,子类,说public和protected属性的可见,是否是说在子类的内部,父类的public和protected属性是可以使用的?
3)在第二栏,本包内是否可用,这个我不太理解,一个包中有若干类,比如说class1中分别有public,protected,默认属性和private四四种属性,本包中还有一个类class2,在class2中如何可见class1中的public,protected和默认?
是在class2中建立一个class1的对象,然后通过对象直接引用各个属性吗?

1,公有访问控制符public:

Java的类是通过包的概念来组织的,包氏类的一个松散的集合。处于同一个包中的类可以不需要任何说明而方便的互相访问和引用,而对于不同包中的类,则不行。但当一个类被声明为public时,他就具有了被其他包中的类访问的可能性,只要这些其他包中的类在程序中使用import语句引入public类,就可以访问和引用这个类。

类中被设定为public的方法是这个类对外的接口部分,避免了程序的其他部分直接去操作类内的数据,这实际就是数据封装思想的体现。

每个Java程序的主类都必须是public类,也是基于相同的原因。

用public修饰的类的域称为公共域。如果公共域属于公共类,则它能被所有的其他类所引用。public修饰符会造成安全性的数据封装性下降,所以一般应减少public域的使用。

2,缺省访问控制符:

缺省访问控制权规定,该类只能被同一个包中的类访问和引用,而不可以被其他包中的类使用,这种访问特性又称为包访问性。

同样道理,类内的域或方法如果美育访问控制符来限定,也就具有包访问性。

简单说,定义在同一个程序中的所有类属于一个包。

3,私有访问控制符private :

用private修饰得域或方法只能被该类自身所访问和修改,而且不能被任何其他类(包括该类的子类)来获取和引用。private修饰符用来声明那些类的私有成员,它提供了最高的保护级别。

4,保护访问控制符protected :

用protected修饰的成员变量可以被三种类所引用:该类自身、与它在同一个包中的其它类、在其他包中的该类的子类。使用protected修饰符的主要作用是允许其他包中该类的子类来访问父类的特定属性。

5,私有保护访问控制符 private protected :

用private protected修饰的成员变量可以被两种类访问和引用,一种是该类本身,一种是该类的所有子类。把同一个包内的非子类排除在可访问的范围之外,使得成员变量更专于具有明确继承关系的类,而不是松散地组合在一起的包。

另记:内部类的修饰字还可以是private:即只有外层类的区域可以访问。

参考资料:http://hi.baidu.com/webwlsong/blog/item/0b7d14e7a49e6629b938208c.html

温馨提示:内容为网友见解,仅供参考
第1个回答  2009-05-02
friendly??Java有这个关键字吗??除了public ,private,protected外第四种应该是什么都不写:比如四种修饰:
public int i;
private int i;
protected int i;
int i;
好了回答你3个提问:
1)正确(如果在本类中都不能用那还定义干嘛??)
2)没错,public就是公交车谁都可以上,protected就是给子类访问的
3)同包(package)可见,就是我说的第四种修饰int i;了class1和class2在同一包中,class2非class1的子类,那么class2只能访问class1的public int i;或int i2;
private,protected不能访问
关于对象引用,没错,不过java不推荐直接访问字段(状态),推荐通过方法(行为)去改变状态,比如
public class A{
private int test;
public void setTest(int test){
this.test = test;
}
public int getTest(){
return this.test;
}
}
************************华丽的分割线**************************
在另外一个类中调用A:
A a = new A();
a.setTest(100);
System.out.println(a.getTest());
//输出结果显而易见吧?
至于为什么要这么做,建议楼主去看下封装,面向对象的概念,还有重点就是搞清楚类的概念
第2个回答  2009-05-02
1. 第一栏,在这个类中定义的属性 随便什么修饰词(包括不加修饰词的) 都能访问
2. 第三栏,子类可以访问父类的public和protected属性,其它两个都不能访问
3. 第二栏,new class1().属性名 访问,当然也可以在类中定义get()和set() 方法 方法的修饰词一般都用public
这几个修饰词的范围 记住就行了 写程序的时候一般都是public或者缺省,
private用的时候不多 只在不允许其它类访问的时候才用
用的多了 自然就知道什么时候用哪个
继续往下学习吧 时间宝贵 学习就要边看边练 这样才能迅速掌握
第3个回答  2009-05-02
1:是的
2:是的
3:直接在class2中引用class1.变量

java 中public ,protected 和 private的一些文体
5,私有保护访问控制符 private protected :用private protected修饰的成员变量可以被两种类访问和引用,一种是该类本身,一种是该类的所有子类。把同一个包内的非子类排除在可访问的范围之外,使得成员变量更专于具有明确继承关系的类,而不是松散地组合在一起的包。另记:内部类的修饰字还可以是privat...

作用域public,protected,private, 不写的区别
在面向对象编程中,作用域的设定决定了类的属性与方法的可访问范围,对于公共(public)、受保护(protected)、私有(private)以及默认(default)这几种访问级别,它们的区别在于访问权限的范围与限制。公共(public)类的属性与方法可以在类的外部被访问,这意味着在任何地方都可以直接使用这个类的成员,这赋予了...

Java 中使用 public,private 和 protected 修饰的方法
在Java编程中,使用public、private和protected修饰符为方法提供访问控制,决定了这些方法的可见性和可访问范围。默认情况下,类中的方法通常使用public修饰,表示该方法对所有类开放,供其他类访问。private修饰的方法属于类的私有成员,仅能被类内部的方法访问,外部类无法直接访问。protected修饰的方法比public...

Java中的private,protected,public和default的区别
(1)public:可以被所有其他类所访问。(2)private:只能被自己访问和修改。(3)protected:自身,子类及同一个包中类可以访问。(4)default(默认):同一包中的类可以访问,声明时没有加修饰符,认为是friendly。四类的使用范围是:

类的public, private, protected有什么区别?
1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用 2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用。3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就...

Java 装饰词public、private、static、final等声明词
1. **public**:表示公开访问,意味着该成员可以被任何类访问,包括其他包中的类。public成员通常用于定义类的接口,对外提供服务。2. **private**:私有访问,只能在声明该成员的类内部访问。这确保了成员的封装性,保护了类内部数据的完整性。3. **protected**:受保护访问,允许子类和同一包内的...

写出java中定义函数的格式
在Java中,定义函数的格式一般为:`访问修饰符 返回值类型 方法名 { 方法体 }`。详细 在Java编程语言中,函数是执行特定任务的一段代码。定义一个方法需要遵循一定的格式。首先,你需要指定方法的访问修饰符,它决定了该方法可以在哪里被访问。常见的访问修饰符有`public`、`protected`、`private`以及...

Java中的private,protected,public和default的区别
1、private修饰词,表示成员是私有的,只有自身可以访问;2、protected,表示受保护权限,体现在继承,即子类可以访问父类受保护成员,同时相同包内的其他类也可以访问protected成员。3、无修饰词(默认),表示包访问权限(friendly, java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++ ),同...

Java中的private,protected,public和default的区别
区别:(1)public:可以被所有其他类所访问。(2)private:只能被自己访问和修改。(3)protected:自身,子类及同一个包中类可以访问。(4)default(默认):同一包中的类可以访问,声明时没有加修饰符,认为是friendly。

java作用域public,private,protected,以及不写时的区别
public:公有,所有类都可以访问 puotected:保护,同一类、同一包、不同包的子类可以访问 缺省:即什么都不写,同一类、同一包可以访问 private:私有,只有同一类中可访问

相似回答
大家正在搜