java修饰符,java 的访问修饰符是什么?

java修饰符目录

java 中有多少修饰符,它们的访问权限又是什么?

java 的访问修饰符是什么?

Java修饰符private,protected,public和default的区别

Java修饰符是用于控制类、变量、方法、构造函数等元素的访问权限和其他特性的关键字。Java中的修饰符包括以下几种:。

1. 访问修饰符:用于控制类、变量、方法、构造函数等元素的访问权限,包括public、protected、private和默认访问控制符。

2. 非访问修饰符:用于控制类、变量、方法、构造函数等元素的特性,包括final、static、abstract、synchronized、transient、volatile等。

3. 注解修饰符:用于为类、方法、变量等元素添加注解,包括@Deprecated、@Override、@SuppressWarnings等。

使用不同的修饰符可以使代码更安全、更灵活、更易于维护。"。

java 中有多少修饰符,它们的访问权限又是什么?

楼主问的是访问控制符,只有访问控制符才说访问权限

JAVA里面 准确来讲是有四个访问控制符 默认、public、private、protected等四个

pravite 只能在同一个类中访问

protected,可以在同一个类、同一个包、不同包中的子类访问

默认:在同一个类、同一个包中访问

public 同一个类,同一个包、不同包中的子类、不同包中的非子类

不知道楼主问的是不是这,如果不是可以再留言

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修饰符private,protected,public和default的区别

对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类、接口、异常等。

它往往用于对外的情况,也就是对象或类对外的一种接口的形式。

对于protected修饰符,它主要的作用就是用来保护子类的。

它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西。

对于default来说,有点的时候也成为friendly(友员),它是针对本包访问而设计的,任何处于本包下的类、接口、异常等,都可以相互访问,即使是父类没有用protected修饰的成员也可以。

对于private来说,它的访问权限仅限于类的内部,是一种封装的体现,例如,大多数的成员变量都是修饰符为private的,它们不希望被其他任何外部的类访问。

下表为Java访问控制符的含义和使用情况

修饰符 类内部 本包 子类 外部包

public √ √ √ √

protected √ √ √ X

default √ √ X X

private √ X X X

注意:Java的访问控制是停留在编译层的,也就是它不会在.class文件中留下任何的痕迹,只在编译的时候进行访问控制的检查。

其实,通过反射的手段,是可以访问任何包下任何类中的成员,例如,访问类的私有成员也是可能的。

区别:

1. public:可以被所有其他类所访问。

2. protected:自身,子类及同一个包中类可以访问。

3. default(默认):同一包中的类可以访问,声明时没有加修饰符,认为是friendly。

4. private:只能被自己访问和修改。 (随机推荐阅读本站500篇优秀文章点击前往:500篇优秀随机文章)

来源:本文由易搜IT博客原创撰写,欢迎分享本文,转载请保留出处和链接!