protected和默认访问权限
1. java中private,protected,public和default的区别
private,public,protected,默认不写(firendly)
1、Class类的访问权限:
public:可以供所有的类访问。
默认:默认可以称为friendly但是,Java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++。默认的访问权限是包级访问权限。
即如果写了一个类没有写访问权限修饰符,那么就是默认的访问权限,同一个包下的类都可以访问到,即使可以实例化该类
(当然如果这个类不具有实例化的能力除外,比如该类没有提供public的构造函数)。
说明:
1、每个编译单元(类文件)都仅能有一个publicclass
2、publicclass的名称(包含大小写)必须和其类文件同名。
3、一个类文件(*.java)中可以不存在publicclass。
这种形式的存在的场景:如果我们在某个包内撰写一个class,仅仅是为了配合同包内的其他类工作,而且
我们不想再为了撰写说明文档给客户(不一定是现实意义的客户,可能是调用这个类的类)看而伤脑筋,而且有可能过一段时间之后
有可能会彻底改变原有的做法,并完全舍弃旧版本,以全新的版本代替。
4、class不可以是private和protected。
5、如果不希望那个任何产生某个class的对象,可以将该类得所有构造函数设置成private。但是即使这样也可以生成该类的对象,就是class的static的成员(属性和方法)可以办到。
2、类成员变量的访问权限:
public:紧接public的属性任何类都可以访问到。可以直接使用ClassName.propertyName。但是从类的封装性上来考虑将一个类的属性定义成public一般很少使用,
在定义静态常量的时候通畅会这样定义。如:publicstaticfinalintPAGE_SIZE=10;
private:只有类本身内部的方法可以访问类的private属性,当然内部类也可以访问其外部类的private成员的。(属性和方法)
默认(friendly):包级可见,同一个包内的类可以访问到这个属性,可以直接使用className.propertyName来访问,但是从类的封装性特性来说很少这样使用类的属性的。
protected:关键字所处理的是所谓“继承”的观念。对于同一包的其他类,protected=默认,对于不同包的类,如果存在继承关系,而baseClass存在protected属性,则可以被其自继承,而不同包的其他类
则不能访问类的protected属性。
3、类的成员方法的访问权限:
其从语法角度来讲,这些访问权限控制符作用于类的方法和作用于类的属性上的效果是一样的。
public:所有类可见。
pirvate:只有同一类内部的方法可见,在有就是内部类也可以访问到。
默认(friendly):包内可见。
protected:继承可见。
4、访问权限存在的理由
1、“让使用者无法碰触到他们不该碰触的东西。”这些东西仅供类的内部机制使用。将某些成员声明成private,对于使用者来说可以说是一种服务,
因为这样使用者可以知道哪些是他关注的哪些是不重要的,不需要关注,如此历来对于使用来说降低了对使用对象认识的难度。
2、(最终要的理由)让程序设计者可以更动class内部运作方式,而无须担心波及到客户端程序。
java的“访问权限修饰符”赋予classes开发者极具有价值的控制能力。身为classes开发者,如果你的任何改变可以完全不干扰你的使用者,
你便可以安心改变你的底层实现,因为客户端程序员无法访问class的这一部分。
2. java中四种访问权限修饰符的各种情况介绍(最好是个人心得!!)、简明易懂些的
访问修饰符有四种public protected 默认的不写的 private
要区分的重点 在同包中的类和不同包中类中的访问 (注意这里是指类和类之间的访问权限)
同包的类是指写在一个文件夹中的类,不同包中的类是指写在不同文件夹中的类(如不同项目和不同包都是这个范畴)
下面关键的权限问题了
public 访问权限最大,同包(同文件夹)里面的类绝对是可以互相访问的,不同包中的类只要经过import得到了路径后也是可以通过类的对象访问的
protected 和 默认的比public访问权限都要小(不能在其他包中被访问除非继承这里是指protected)但他们两之间有细微的区别就是在不同包中的类继承protected和 默认的时候 ,继承的类能够访问用protected修饰的成员而不能访问默认即不写修饰符的成员
private 范围最小 只能在类内部的成员之间进行访问,外部的类是绝对没有办法通过对象访问到私有成员的,继承的类也不会继承private的成员(完全手打)
3. java四种权限修饰符
java有四种访问权限修饰符,分别是:public、protected、private和包访问(即默认,什么都不加)。
private,只有本类可以访问。
protected,本类、相同包、其它包中的子类可以访问。
public本类、相同包、其它包都能访问。
包访问(默认),相同包可以访问。
4. 说明java中public、protected、default、private四个访问控制修饰的作用
关于访问控制,private,default,protected,public,不加任何访问权限限定的成员采用的默认访问权限,也就是default或者package,可以被这个类本身和同一个包中的类所访问;private对访问权限的限制最大,修饰那些不想让外界访问的数据和方法,表示私有的,这有利于数据的安全和数据的一致性,同样如果以个类的构造方法被申明为private其他不能生成该类的实例对象;protected申明的成员可以被这个类本身和他的子类以及同一个包中所有其他类访问;带有public的成员可以被所有的类访问。
5. public private protected和默认的区别
public private protected和默认的区别?如下:
第一, 类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。
总结如下表
第二,在说明这四个关键字之前,我想就class之间的关系做一个简单的定义:对于继承自己的class,base class可以认为他们都是自己的子女,而对于和自己一个目录下的classes,认为都是自己的朋友。
1、public:对所有用户开放,所有用户都可直接调用
2、private:私有。除了class自己之外,任何人都不可直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可使用。
3、protected:对于子女、朋友来说,就是public的,可自由使用,无任何限制;而对于其他的外部class,protected就变成private。(同一个包中的类,若不在同一个包中,必须为其子孙类才可使用)
4、默认:默认可以称为friendly,但是java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++。默认的访问权限是包级访问权限。
第三,另外补充说明:
1.每个编译单元(类文件)都仅能有一个public class
2.public class的名称(包含大小写)必须和其类文件同名。
3.一个类文件(*.java)中可以不存在public class。
如果我们在某个包内撰写一个class,仅仅是为了配合同一包内的其他类工作,并且我们不想再为了撰写说明文档给客户(不一定是现实意义的客户,可能是调 用这个类的类)看而伤脑筋;或者有可能过一段时间之后会彻底改变原有的做法,并以全新的版本代替旧版本,这种情况下一般会默认。
4、class不可以是private和protected。
6. 简述 private、 protected、 public、 internal 修饰符的访问权限。
public:类或成员可以由同一程序集中的任何其他代码或引用它的另一个程序集访问。
private:只能通过同一个类或结构中的代码访问类型或成员。
protected:类或成员只能由同一个类中的代码访问,或者在从该类派生的类中访问。
internal:类或成员可以由同一程序集中的任何代码访问,但不能从另一个程序集访问。
(6)protected和默认访问权限扩展阅读:
private、 protected、 public、 internal 修饰符除了可以单独使用,还可以组合使用。
protected internal:访问仅限于从包含类派生的当前程序集或类型。
private protected: 访问仅限于从当前程序集中的包含类派生的包含类或类型。
除了使用protected internal或private protected组合时,成员或类只允许使用一个访问修
饰符。名称空间上不允许访问修饰符。命名空间没有访问限制。
根据成员声明发生的上下文,仅允许某些声明的可访问性。如果在成员声明中未指定访问修饰
符,则使用默认辅助功能。
顶级类型(不嵌套在其他类型中)只能具有internal或public可访问性。这些类型的默认可访
问性是internal。
7. Java中的private,protected,public和default的区别
private:
Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
default:即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访问。
protect:
介于public
和
private
之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
public:
Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。
8. public ,protected, private这三种权限限定关键字的限定的内容访问范围是什么
private关键字:只在本类中可以使用
默认:在本类和本包中可以使用
protected关键字:在本类、本包和不同包的子类中可以使用
public关键字:在所有的类和包中可以使用
即:
Private强调给自己使用
默认强调给同包下的使用
protected强调给子类使用
public给所有用
9. java类中变量如果定义时没给访问权限默认是什么啊
如果没有写就是默认访问权限。
java的类有2种访问权限,public、默认
而方法和变量有4种:public、默认、protected、private
其中默认访问权限和protected很相似,有着细微的差别。
public意味着任何地方的其他类都能访问
默认则是同一个包的类可以访问。
protected表示同一个包的类可以访问,其他的包的该类的子类也可以访问。
private表示只有自己类能访问
10. 什么是Java类的访问权限
在解释访问权限控制之前,先看一个场景。在学生信息管理系统中,有两个类,分别是学生类和课程类,课程类提供了课程表和课程安排两个方法,学生类可以调用课程类提供的课程表查看课程安排,但不能调用课程安排方法,该如何处理,此时就可以利用访问权限来进行控制。
在Java中,提供了四种访问权限控制:默认访问权限(包访问权限),public,private以及protected。
默认访问权限(default):即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访问。
private: 对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
protect: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护的”。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。下表列出了四种访问权限的控制粒度:
packagecom.cxh.test1;
classPeople{//默认访问权限(包访问权限)
privateStringname=null;
publicPeople(Stringname)
{
this.name=name;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname)
{
this.name=name;
}
}
从代码可以看出,修饰People类采用的是默认访问权限,而由于People类和Main类在同一个包中,因此People类对于Main类是可见的。