Java中public、protected、default和private的区别

public:

具有最大的访问权限,可以访问任何一个在classpath下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。

protected:

主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西

default:

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

private:

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

注意:java的访问控制是停留在编译层的,也就是它不会在.class文件中留下任何的痕迹,只在编译的时候进行访问控制的检查。其实,通过反射的手段,是可以访问任何包下任何类中的成员,例如,访问类的私有成员也是可能的。

区别:

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

private:只能被自己访问和修改

protected:自身、子类及同一个包中类可以访问

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

时间: 2024-08-02 15:10:21

Java中public、protected、default和private的区别的相关文章

JAVA中public protected default private访问权限

前言:本文解决的问题 public protected default private这四个修饰符的访问权限问题 public对所有类公开,private只有本类可以访问.这里需要注意的是protected,除了对本类和子类公开外,还对本包所在类的公开,即同一包类的类都可以访问:default,如果没有明确写出修饰类型则为default,它只对本包公开.这四个修饰符的访问权限从大到小为public>protected>default>private. 另外,慎用protected,容易破

详细的解说public,protected,Default和private的权限问题

详细的解说public,protected,Default和private的权限问题 让人更好的了解public,protected,Default和private他们之间的权限问题,我会做一个直观的表格.通过一步一步的实验,将这个表格填写完整,让后在做一下总结,这样他们四个之间的关系,就会非常直观的展现出来,简单易懂,清楚明了.由于是详细的解说,可能篇幅会比较长,如果有读者想直接知道结论和结果,可以直接看五个步骤后的完整表格,最终的结论. 表格如下: 这样我会一步一步的完善这个表格,第一个实验

java作用域public protected private,以及不写时的区别

下面我简单的画一张表来说明问题: modifiers 作用域(可见) 当前类 同包 子孙类 其他包 public √  √  √   √ protected  √  √  √ × default(friendly)  √  √ × × private  √ × × × 不写的时候默认为friendly  也就是default默认的.

Java中的public、protected、default和private的区别

(1)       对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类.接口.异常等.它往往用于对外的情况,也就是对象或类对外的一种接口的形式. (2)       对于protected修饰符,它主要的作用就是用来保护子类的.它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西. (3)       对于default来说,有点的时候也成为friendly(友员),它是针对本包访问而设计的,任何处于本包下的类.接口.异常等,

java 修饰符的作用一(public protected default private 组)

1.public protected default private 组 public 权限最大,同类,同包,不同包,同包子类父类之间,不同包子类父类之间都可以访问. java 默认的权限是default,即friendly(注:friendly 在java中没有,是c的说法.) 同类,同包,同包子类父类都可以访问. protected受保护的,同类,同包,同包子类父类,不同包子类父类都可以访问 private 私有的权限最小,同类可以访问. 图如下: 位置                   

Java的权限修饰符(public,protected,default,private)

访问权限修饰符权限从高到低排列是public  ,protected  ,default, private. 一.根据"是否是同包"."是否是子类"分为4中情况+本类 5种情况 二.把 同包中的子类 和 同包中的非子类 合并为 同包 访问修饰符 本类 同包 不同包,子类 不同包,非子类 public √ √ √ √ protected √ √ √   default(friendly) √ √     private √      

java四种权限修饰符(public > protected > (default) > private)

权限修饰符在哪里可以访问 (default) : 表示什么权限修饰符都不写 位置 public protected (default) private 同一个类 yes yes yes yes 同一个包 yes yes yes no 不同包子类 yes yes no no 不同包非子类 yes no no no 原文地址:https://www.cnblogs.com/zhuobo/p/10612656.html

JAVA中 成员变量和和实例变量区别

java语言支持的变量类型 类变量:独立于方法之外的变量,用 static 修饰. 局部变量:类的方法中的变量. 实例变量(全局变量):独立于方法之外的变量,不过没有 static 修饰. public class Variable{ static int allClicks=0; // 类变量 String str="hello world"; // 实例变量 public void method(){ int i =0; // 局部变量 }  } JAVA的局部变量 局部变量声明在

Java中final、finally、finalize的区别(转)

Java中final.finally.finalize的区别与用法,困扰了不少学习者,下面我们就这个问题进行一些探讨,希望对大家的学习有所帮助. 方法/步骤 1 简单区别: final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承. finally是异常处理语句结构的一部分,表示总是执行. finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等. END 方法/步骤2 1 中等区别: 虽然这三

Java中重载、重写与重构的区别

一.重载 重载的概念:在同一个类中允许同时存在一个以上的同名方法,只要这些方法的参数个数或类型不同即可. 重载的规则: 必须具有不同的参数列表. 可以有不同的返回类型,只要参数列表不同就可以了. 可以有不同的访问修饰符. 可以抛出不同的异常. 二.重写 重写的概念:(还可以称为覆盖)就是在子类中将父类的成员方法的名称保留,重写成员方法的实现内容,更改成员方法的存储权限,或是修改成员方法的返回值类型 重写的规则: 参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载. 访问修饰符的限制一