java为什么要有访问控制符(java里protected有什么用啊)
大家好,今天小编来为大家解答以下的问题,关于java为什么要有访问控制符,java里protected有什么用啊这个很多人还不知道,现在让我们一起来看看吧!
java里protected有什么用啊
protected为访问控制符,意思为受保护的,其开放程度仅次于public。
说明:
1、protected访问控制符能被用于方法和成员变量。
2、声明为protected的方法和成员变量能被同一个包里的所有类所访问,就像默认修饰符package一样。
3、能被该类的子类所访问,子类可以和父类不在一个包中。
这样,当你想让一个类中的某个方法或成员变量在包中都可见,而且其子类也能访问(子类有可能和父类不在同一个包中)但又不想让所有类都可以访问该类时,就可以用protected修饰符。
需要注意的是在另一个包中的子类可以通过子类或其子类的引用来访问超级类中的受保护的成员。在同一包中的子类没有这个限制。这确保了来自其他包的类只访问其继承层次结构中的一部分的成员。
类有那些访问控制修饰符,分别是什么作用
都别乱说,类的访问控制符就两个:一个是public公共类,即所有的类都能访问引用该类。一个是package-private包私有,只有本包的类才能访问该类。类的修饰符就多了,我知道的有: final最终类,最终的不能被继承,没子类。 static静态嵌套类,顾名思义,静态的。而且是嵌套的,外部类不能用static修饰,只有嵌套类才行。 abstract抽象类,就是类中有方法是抽象方法。ps:全部都是抽象方法,就是接口了。
java中的private到底有什么用
private直接翻译过来为私有的,但在Java中它的含义并不是私有的。而是本类中可用的,表面上是说只有本类中可以使用(更改)该变量或者方法。
但他还有一个含义为:只要在我这个类的范围内部(括号内)即可使用,他不关心使用者是谁,是他自己或者别的类中的实例(例如通过this使用)。只要你在我的类里面用就行了。所以private应该理解为本类中可使用的,而非是本类私有的。
将属性和方法用private封装后表示,被封装的属性与方法只能在本类中使用,类外部不可见。
此时要想访问被封装的属性,必须提供getter与setter方法
setter方法:主要进行属性内容的设置与修改
getter方法:主要进行属性内容的取得
类的设计原则:编写类的时候,没有额外说明,所有属性必须使用private封装(成员变量)
private不能用于外部类的封装,但是可以用于内部类的封装
扩展资料
Private变量只能在包含其声明的模块中使用。可以使用 Private语句声明变量的数据类型。例如,下面的语句声明了一个 Integer类型的变量:“Private NumberOfEmployees As Integer”也可以使用 Private语句来声明变量的对象类型。
实例声明一个变量,Private X As New Worksheet如果在定义对象变量时没有使用 New关键字,则在使用该变量之前,必须使用 Set语句将一个已有的对象赋给该引用对象的变量。
在赋值之前,所声明的这个对象变量有一个特定值 Nothing,这个值表示该变量没有指向任何对象的实例。可以用带空圆括号的 Private语句来声明动态数组,然后可以在过程内用 ReDim语句来定义该数组的维数和元素。
如果试图在 Private,Public或 Dim语句中重新定义一个已显式定义了大小的数组的维数,就会发生错误。当初始化变量时,数值变量被初始化为 0,变长的字符串被初始化为一个零长度的字符串(""),而定长的字符串则用 0填充。
Variant变量被初始化为 Empty,用户自定义类型的变量的每个元素作为各自独立的变量进行初始化。注意当在过程中使用 Private语句时,通常将 Private语句放在过程的开始。
参考资料:百度百科- Private(编程语句)
百度百科- Java(计算机编程语言)
java 的访问修饰符是什么
Java中的访问修饰符
Java面向对象的基本思想之一是封装细节并且公开接口。Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节。访问控制分为四种级别:
(1)public:用public修饰的类、类属变量及方法,包内及包外的任何类(包括子类和普通类)均可以访问;
(2)protected:用protected修饰的类、类属变量及方法,包内的任何类及包外那些继承了该类的子类才能访问(此处稍后解释),protected重点突出继承;
(3)default:如果一个类、类属变量及方法没有用任何修饰符(即没有用public、protected及private中任何一种修饰),则其访问权限为default(默认访问权限)。默
认访问权限的类、类属变量及方法,包内的任何类(包括继承了此类的子类)都可以访问它,而对于包外的任何类都不能访问它(包括包外继承了此类的子类)。default重点突出包;
(4)private:用private修饰的类、类属变量及方法,只有本类可以访问,而包内包外的任何类均不能访问它。
网上一些资料及一些书上用表格对java访问修饰符做了清楚的总结,如下表所示:
重要总结:通过上面的分析,我们可以看到:
1.public、private和protected对我们来说没有任何异议。
2.顶层类只能用public访问修饰符和default(默认)访问修饰符修饰,其中用默认修饰符修饰的类(及没有任何修饰符的类,如class B{})不能被其他包中的类继承,这也说明了default(默认)访问修饰符突出的是包权限
3. protected:本人做了一次实验,发现在不同包的子类中,new一个父类对象,并用该父类对象去访问父类中的用protected修饰的类属变量和方法时不能访问,而new一个子类对象时,子类对象可以访问(说明protected修饰的类可以被其他包中的类继承)。也可以在子类重写父类的方法中使用super关键字调用。这岂不是和上面表格中的总结(红色对勾)冲突了?本人也是百思不得其解。最后在网上找到了一个相对比较认可的解释,如下:
protected修饰符的修饰的成员变量和方法也称为受保护的成员变量和方法,受保护的成员变量和方法可以在本类或同一个包中的其它类(包括子类)中通过类的实例进行访问,也可以被同一个包中的类或不同包中的类继承,但是不能在不同包中的其它类(包括子类)中通过类的实例进行访问。
4.如果一个类使用public修饰,那该类的类名必须与他所在的源文件名相同。一个.java源文件中有且只有一个public类,顶层类只能用public和默认修饰符(即无修饰符)修饰;
5.final修饰的类不能被继承,没有子类。
6.abstract修饰的类不能被实例化,必须被子类继承。类只要有一个抽象方法就必定是抽象类,但抽象类不一定要有抽象方法。
最终总结,就一句话:protected修饰符所修饰的类(这句话中指父类)属成员变量和方法,只可以被子类访问,而不管子类是不是和父类位于同一个包中。default修饰符所修饰的类属成员变量和方法,只可被同一个包中的其他类访问,而不管其他类是不是该类的子类。protected属于子类限制修饰符,而default属于包限制修饰符。
java为什么要有访问控制符的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java里protected有什么用啊、java为什么要有访问控制符的信息别忘了在本站进行查找哦。