Java访问修饰符–public, protected, private and default

Java提供了四个访问修饰符来设置类,变量,方法和构造函数的访问级别,即publicprivateprotecteddefault。这些访问级别修饰符确定其他类是否可以使用特定字段或调用特定方法。

1. Java访问修饰符

让我们快速地比较一下这些访问修饰符。

  1. public  -随处可见
  2. protected  –可在同一包和子类中访问
  3. default  –仅在同一程序包中可访问
  4. private –仅可在同一类上使用

可以严格按以下顺序对访问说明符进行排序

公用>受保护>软件包专用(或默认)>专用

1.1. public

公众可以从任何地方访问。可以从任何其他类访问已声明为公共的类,方法,构造函数,接口等。
但是,如果我们尝试访问的公共类位于不同的包中,则仍然需要导入公共类。

public class HelloWorld
{
private String format; public String getFormat() {
return this.format;
}
public void setFormat(String format) {
this.format = format;
}
}

在上面的示例中,getFormat()setFormat()方法是公共的,因此可以在任何地方访问它们。

1.2. protected

相同程序包的类和任何程序包中的子类都可以访问Protected。受保护的访问使子类有机会使用helper方法或变量,同时防止无关的类尝试使用它。

public class HelloWorld
{
private String format; protected String getFormat() {
return this.format;
}
protected void setFormat(String format) {
this.format = format;
}
}

在上面给出的示例中HelloWorld,变量format是声明的protected,因此可以由存在于同一包中的所有类HelloWorld.java以及存在于其他包中的子类访问。

1.3. default (package private)

默认访问修饰符意味着我们不会为类,字段,方法等明确声明访问修饰符。默认可被同一包的类访问。
请注意,public static final默认情况下,接口中的字段是隐式的,接口中的方法是默认的public

public class HelloWorld
{
String format; public String getFormat() {
return this.format;
}
public void setFormat(String format) {
this.format = format;
}
}

1.4. private

private访问修饰符是最严格的访问级别。(最高级)类和接口不能是私有的。私人变量只能在同一类内访问。声明为私有的方法,变量和构造函数只能在声明的类本身内访问。
在上面给出的示例中HelloWorld,变量format被声明为私有,因此没有类可以直接访问它。必须通过公共方法getFormat()和进行访问setFormat()
访问级别以两种方式影响您。首先,当您使用来自另一个来源的类时,访问级别确定您自己的类可以使用那些类的成员。其次,编写类时,需要确定类中每个成员变量和每个方法应具有的访问级别。
局部变量和形式参数不能使用访问说明符。由于根据范围规则,它们本质上是外部无法访问的,因此它们实际上是私有的。
如果其他程序员使用您的类,则要确保不会发生由于滥用而引起的错误。访问级别可以帮助您做到这一点。

2.访问控制级别

访问控制分为两个级别

  1. 类级别 -允许的修饰符是public或package-private(默认)。
  2. 方法级别 -允许的修饰符是public,private,protected或package-private(默认)。

可以使用修饰符声明一个类public,在这种情况下,该类对于所有地方的所有类都是可见的。如果类没有修饰符(default,也称为package-private),则仅在其自己的包中可见。
对于成员,还有两个附加的访问修饰符:privateprotected。private修饰符指定只能在其自己的类中访问该成员。
protected修饰符指定成员只能在其自己的程序包中(与package-private一样)访问,并且只能由其在另一个程序包中的类的子类访问
更多精彩请关注

Java面向对象入门(2)-访问修饰符的更多相关文章

  1. Java面向对象_包装类访问修饰符

    在java中有一个设计的原则"一切皆对象",java中的基本数据类型就完全不符合这种设计思想,因为八种基本数据类型并不是引用数据类型,所以java中为了解决这样的问题,jdk1.5 ...

  2. Java 中的 protected 访问修饰符你真的了解吗?

    protected Java 中的 protected 访问修饰符 总结 在同一个包中,类中 protected 或 default 修饰的属性或方法可以在类外被其对象 (实例) 外部访问,也可以被子 ...

  3. Java学习笔记:04面向对象-内部类_访问修饰符_final

    04面向对象-内部类/访问修饰符/final 1.static的介绍 static:关键字,静态的 static的作用是用来修饰类中的成员 2.访问一个类中的某一个成员变量 方法一: _1.创建对象 ...

  4. Java public 和 private 访问修饰符

    何为封装 从事面向对象编程的 Java 程序员,不可能不知道封装,它是面向对象编程的精髓,非常重要. 那什么是封装?字面意思就是把摆在外面的东西包起来. 一句话,封装就是对外隐藏内部细节. 那为何要封 ...

  5. java中四种访问修饰符

    Java中的四种访问修饰符:public.protected.default(无修饰符,默认).private. 四种修饰符可修饰的成分(类.方法.成员变量)   public protected d ...

  6. Java包、权限访问修饰符、封装性

    包 概念: 物理上是文件夹:逻辑上是有逻辑关系的类的集合 作用: 避免类重名:控制访问权限 命名规范: 在包名中,可以使用.号来区分包的级别:包名一般情况下是小写 第一级 指该项目的类型,如com,o ...

  7. JAVA 中的权限访问修饰符(public,protected,default,private )

    JAVA中有四个权限访问修饰符:public,protected,default,private 注意:这里讲的是对类中属性和方法的访问权限,并不是类的访问权限 1.default:包访问权限 如果什 ...

  8. Java—匿名对象/内部类/访问修饰符/代码块

    匿名对象 匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. //创建一个普通对象 Person p = new Person(); //创建一个匿名对象 new Pers ...

  9. Java面向对象之 接口: [修饰符] interface 接口名 {...};子接口:[修饰符] interface 接口名 extends 父接口,父接口2...{...}

    1.什么是接口? 类比抽象类,把功能或者特性类似的一类 抽象的更彻底,可以提炼出更加特殊的"抽象类"----接口 2.如何定义接口 语法:  [修饰符] interface 接口名 ...

随机推荐

  1. window平台基于influxdb + grafana + jmeter 搭建性能测试实时监控平台

    一.influxdb 安装与配置 1.1 influxdb下载并安装 官网无需翻墙,但是下载跳出的界面需要翻墙,我这里提供下载链接:https://dl.influxdata.com/influxdb ...

  2. Ganglia安装及配置

    Ganglia安装及配置root用户下yum安装所依赖的环境(实际生产环境都已安装)yum -y install apr-develapr-util check-devel cairo-devel p ...

  3. linux--->阿里云centos6.9环境配置安装lnmp

    阿里云centos6.9环境配置安装lnmp mysql安装 本人博客:http://www.cnblogs.com/frankltf/p/8615418.html PHP安装 1.安装依赖关系 yu ...

  4. RocketMQ消息模型

    rocketmq采用的是发布-订阅的模式,不需要每个消费者维护自己的消息队列,生产者将消息发送到topic,消费者订阅此topic 读取消息. 基本概念: 消息模型:消息模型包括producer,co ...

  5. 前端入门nginx

    一.nginx是什么 NGINX is a free, open-source, high-performance HTTP server and reverse proxy, as well as ...

  6. 《ASP.NET Core 高性能系列》静态文件中间件

    一.概述 静态文件(如 HTML.CSS.图片和 JavaScript等文件)是 Web程序直接提供给客户端的直接加载的文件. 较比于程序动态交互的代码而言,其实原理都一样(走Http协议), ASP ...

  7. Vue methods,watch,computed的区别

    1. computed(计算属性) 计算属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算.注意,如果某个依赖 (比如非响应式属性) 在该实例范畴之外,则计算属性是不会被更新的. eg: < ...

  8. 基于 H5 和 webGL 的 3d 智慧城市

    前言 中共中央.国务院在今年12月印发了<长江三角洲区域一体化发展规划纲要>(下文简称<纲要>),并发出通知,要求各地区各部门结合实际认真贯彻落实. <纲要>强调, ...

  9. codeforces 540D Bad Luck Island (概率DP)

    题意:会出石头.剪刀.布的人分别有r,s,p个,他们相互碰到的概率相同,输的人死掉,问最终活下去的人是三种类型的概率 设状态dp(i,j,k)为还有i个石头,j个剪刀,k个布时的概率,dp(r,s,p ...

  10. 用Python来自动刷智慧树网站的网课

    学校最近让看什么网课,智慧树网站的,太无聊了,写个脚本刷下,这里是用Python+selenium实现的,也可以用js脚本,更简单,但是我这里刚好最近在学python,就顺便练习下,说下有几个点, 1 ...