package:包访问权限

如果不提供任何访问权限修饰词,则意味着它是包访问权限

默认访问权限没有任何关键字,但通常是指包访问权限(有时也表示为friendly)。这意味着包中所有其他类都可以访问这个成员或方法,但是这个包之外的所有类不可以访问

例:

com.notes.packages.test.Info

package com.notes.packages.test;

public class Info {

void print() { System.out.println("default method -- print()"); }

}

com.notes.packages.test.PublicDemo01

package com.notes.packages.test;

public class PublicDemo01 {

public static void main(String[] args) {

Info x = new Info();

x.print();

}

}

PublicDemo01和Info在同一个包下,可以访问Info的default级别的方法——print()。

com.notes.packages.PublicDemo02

package com.notes.packages;

import com.notes.packages.test.Info;

public class PublicDemo02 {

public static void main(String[] args) {

Info x = new Info();

// x.print(); // Error

}

}

PublicDemo02和Info不在一个包下,不可以访问Info的包访问权限级别的方法——print()。

public:接口访问权限

使用public关键字,就意味着被声明的成员或方法对所有人都是可以访问的

例:如果将default级别权限例子中的print()方法权限设为public,则PublicDemo02可以访问。

package com.notes.packages.test;

public class Info {

public void print() { System.out.println("public method -- print()"); }

}

private:无法访问

使用private关键字,就意味着被声明的成员或方法,除了本类,其他任何类都无法访问

应用场景:单例模式

protected:继承访问权限

新类(称之子类或派生类)通过继承可以复用一个现有类(称之父类或基类),然后扩展基类的成员、方法。有时,基类的创建者会希望某个特定成员,将它的访问权限赋予派生类而不是所有类。public无法做到这一点,为此,引入了protected来完成这一工作。protected也提供包访问权限,也就是说,派生类以及相同包内的其他类都可以访问protected成员或方法

例:子类继承父类后,可以访问父类的protected成员。

class Father {

private String a = "private";

protected String b = "protected";

public String c = "public";

};

class Son extends Father {

public void print() {

// System.out.println("element a:" + super.a); // Error

System.out.println("element b:" + super.b);

System.out.println("element c:" + super.c);

}

}

public class ProtectedDemo01 {

public static void main(String args[]) {

Son sub = new Son();

sub.print();

}

};

总结

前面各个例子中展示了类的成员、方法都可以用各种权限修饰词来修饰。

除此之外,还有一些需要注意的点:

(1)     静态成员、静态方法的权限修饰词的用法和普通成员、方法一样。

(2)     类虽然也可以被修饰词修饰,但是不可以用privateprotected两个权限修辞词。

(3)     有些书中将包访问权限又叫做默认访问权限。个人不建议这么去记,因为这很容易与Java Se8中新特性——default关键字混淆。这个关键字只能用于Interface,作用是允许程序员在Interface中定义接口的默认具体实现(以往的JDK版本是不允许这样的,你只能在接口中声明方法)。

转载于:https://www.cnblogs.com/coffeerun/p/5728492.html

Java中的访问限制符相关推荐

  1. java中的访问修饰符

    对Java中的修饰符一直记不住,现在结合网上的一些资料进行总结,并重点说明一下protected修饰符. 一. Java中的访问修饰符 Java面向对象的基本思想之一是封装细节并且公开接口.Java语 ...

  2. [转载] 基本概念:java中的访问修饰符

    参考链接: Java中类或接口的访问说明符 转自:https://www.cnblogs.com/tjudzj/p/4443066.html 对Java中的修饰符一直记不住,现在结合网上的一些资料进行 ...

  3. java中 访问修饰符限制性最高的是,问:JAVA中,访问修饰符限制性最高的是( )。(选择一项)...

    问:JAVA中,访问修饰符限制性最高的是( ).(选择一项) A:friendly,B:protected ,C:private ,D:public 正确答案:绛旓細铻烘棆姊ā寮? 绛旓細鑷富鎬? ...

  4. JAVA访问修饰符限制性最高的_问:JAVA中,访问修饰符限制性最高的是protected ( )...

    问:JAVA中,访问修饰符限制性最高的是protected ( ) A:对,B:错 正确答案: 解析: 问:JAVA中,访问修饰符限制性最高的是protected ( )A:对,B:错 相关问题: 密 ...

  5. Java中的访问修饰符详解

    Java一共提供了3个访问修饰控制符:private.protected.public,代表了三种访问控制级别,另外还有一个不加任何访问控制符的访问控制级别,一共提供了4中访问控制级别. 访问控制级别 ...

  6. java 中的访问修饰符

    一. public:所有类都可以访问 protected:所有子类和同包下的类都可以访问 缺省:同包类都可以访问 private:类本身才可以访问 注意点:protected修饰类属性时,例如 pac ...

  7. java中常见的限流算法详细解析

    目录 前言 1. 验证限流以及容器限流 2. 服务端限流 2.1 固定时间窗口 2.2 滑动时间窗口 2.3 漏桶算法 2.4 令牌桶算法 前言 以下的文章参考了一些具体的资料加深了解 B站:Java ...

  8. Java中常用的限流算法

    在Java的系统中,在一些活动日或者是被黑客攻击,导致访问量突然暴增,系统承受不了巨大的流量冲击而崩溃.为了保护我们的系统,在实际开发中有四种常见的限流算法来保证系统的安全性. 1 固定窗口算法 固定 ...

  9. Java中的反射和Java中的访问修饰符

    什么是反射? ①在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性 ②对于任何一个对象,我们都能够对它的方法和属性进行调用 总而言之:它反射Java语言中的一种机制,通过这种机制可以动 ...

最新文章

  1. Ctrl+F5不能使用的问题
  2. jqprint控件使用
  3. android 图片跑马灯动画,ImageView 图片循环跑马灯的效果
  4. python怎么安装requests模块_python安装requests第三方模块
  5. SELinux系列(十一)——SELinux策略规则查看方法(seinfo和sesearch)详解
  6. 新生儿操作系统操作手册
  7. Doris FE配置参数(全面)
  8. 自动血压呼吸检测仪技术方案
  9. 51. yii csrf
  10. SVM多分类原理学习
  11. Alexa Voice Server 实现的 Android APK 聊天机器人
  12. 2.交互-对鼠标及键盘的使用
  13. java重复执行方法_重复java方法
  14. java xss漏洞修复_全局存储型XSS漏洞修复
  15. 笃情开源:我和 Apache DolphinScheduler 社区的故事
  16. mac上使用Mounty软件报错The volume NETAC is not re-mountable in read/write mode
  17. BitLocker加密怎么解除?
  18. Bert实战--文本分类(一)
  19. 阿里云国际中什么是边缘运算?
  20. 流浪大师善始者众善终者寡_流浪者–适合每个开发人员的瑞士军刀

热门文章

  1. OCJP试题分析第一章
  2. java面向对相取钱存钱_java面向对象(银行存款业务无客户)
  3. C/C++中ASCII与Unicode字符串相互转换
  4. 神经网络(补充)(第五章)
  5. scala不使用new关键字创建对象实例
  6. 小米开发出100W手机快充技术:实测逆天
  7. Azure Stack运维工具Azure Stack Tools的使用及实战
  8. JSP 中EL表达式用法详解
  9. NSObject协议中方法:description 和 debugDescription
  10. git学习笔记04-将本地仓库添加到GitHub远程仓库-git比svn先进的地方