Java中的四种访问修饰符:public、protected、default(无修饰符,默认)、private。

四种修饰符可修饰的成分(类、方法、成员变量)

public

protected

default

private

×

×(内部类可以用private修饰)

方法

成员变量

四种修饰符的访问权限

public:对所有类可见

protected:对同一包中的类可见、对同一包及不同包中的子类可见

default:对同一包中的类可见、对同一包中的子类可见

private:仅对类本身可见

可见是可访问的意思,即由这些修饰符修饰的成分(类、方法、成员变量)可以被其它类访问。对子类可见即子类可以继承。

这里需要注意的是protected与default,二者的区别在于不同包中的子类是否可以继承。

访问权限

同一包

同一包中的子类

不同包中的子类

不同包

public

protected

×

default

×

×

private

×

×

×

×

例如

package1:ParentClass、ChildClassOne、TestOne

package2:ChildClassTwo、TestTwo

package3:TestThree

其中ParentClass为

public class ParentClass {

public int a=2;

protected int b = 3;

int c = 4;

private int d = 5;

}

1.对于TestOne来说,ParentClass类、a、b、c均可见,d不可见。即在TestOne中可以new一个ParentClass对象,且该对象中的a,b,c变量可操作。如下:

public class TestOne {

public static void main(String args[]) {

ParentClass obj = new ParentClass();

System.out.println(obj.a);

System.out.println(obj.b);

System.out.println(obj.c);

//System.out.println(obj.d); //d 不可见

}

}

2.ChildClassOne继承ParentClass且与其在同一个包中,则a、b、c均可见,d不可见。

public class ChildClassOne extends ParentClass{

public static void main(String args[]) {

ChildClassOne obj = new ChildClassOne();

System.out.println(obj.a);

System.out.println(obj.b);

System.out.println(obj.c);

//System.out.println(obj.d); // d不可见

}

}

3.ChildClassTwo继承ParentClass,则a、b均可见,d不可见,由于子类与ParentClass不在同一包中,故c(default类型)不可见。

public class ChildClassTwo extends ParentClass{

public static void main(String args[]) {

ChildClassTwo obj = new ChildClassTwo();

System.out.println(obj.a);

System.out.println(obj.b);

//System.out.println(obj.c); // c不可见

//System.out.println(obj.d); // d不可见

}

}

4.对于TestTwo来说,ParentClass类、a均可见,b、c、d不可见。由于TestTwo与ParentClass不在同一个包中,故只有public修饰的成分可见。

public class TestTwo {

public static void main(String args[]) {

ParentClass obj = new ParentClass();

System.out.println(obj.a);

//System.out.println(obj.b); // b 不可见

//System.out.println(obj.c); // c 不可见

//System.out.println(obj.d); // d 不可见

}

}

另外值得注意的是继承父类的子类与其他类之间的可见性,取决于其他类与父类之间的可见性。

对于TestOne来说,ChildClassOne中a,b,c都可见,d不可见,这是由于TestOne与ParentClass在同一个包中。

而对于TestThree来说,ChildClassOne中只有a可见,这是由于TestThree与ParentClass在不同的包中。

需要注意:

虽然a、b对ChildClassTwo可见,TestTwo与ChildClassTwo在同一包中,

但对于TestTwo来说,ChildClassTwo中只有a可见,这是由于TestTwo与ParentClass在不同的包中,只有public修饰的可见。

java中有哪些访问修饰符_java中四种访问修饰符相关推荐

  1. java 权限修饰符_java中4种访问权限修饰符

    在Java编程语言中有四种权限访问控制符,这四种访问权限的控制符能够控制类中成员的可见性. 一.public (1) 定义:public是公共的,被public所修饰的成员可以在任何类中都能被访问到. ...

  2. Java基础:Java中四种访问修饰符

    一.背景. 这篇文章主要介绍了Java中四种访问修饰符详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下.放假在家里休息,闲来无事,想 ...

  3. java中四种默认的权限修饰符,Java中四种访问权限资料整理

    一.Java中有四种访问权限, 其中三种有访问权限修饰符,分别为private.public.protected,还有一种不带任何修饰符(default). 1. private: Java语言中对访 ...

  4. Java 四种访问修饰符区别_四种访问修饰符的区别

    在Java编程语言中有四种权限访问控制符,这四种访问权限的控制符能够控制类中成员的可见性. 一.public (1)定义:public是公共的,被public所修饰的成员可以在任何类中都能被访问到. ...

  5. Java中四种访问权限总结

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.Java中有四种访问权限, 其中三种有访问权限修饰符,分别为private.public.pro ...

  6. java类默认访问权限_Java的四种访问权限

    ❝ 所谓访问权限,指的就是本类中的成员变量.成员方法对其他类的可见性 ❞ 试想一想,当我们修改一个非常庞大的项目时,如果所有变量和方法都是公共权限,那么后端中任何类都有权限去修改它的变量和方法,很有可 ...

  7. java乘法表_Java中四种9*9乘法表的实现方式(附代码)

    前言: 初学java,实现99乘法表是必学必会的内容. 需求 : 分别写出上下左右,对应四个角的乘法表. 思路: 可以先打印出*星星,形成一个直角三角形,然后再替换成乘法公式. 代码如下: publi ...

  8. java中访问修饰符_Java中的非访问修饰符是什么?

    java中访问修饰符 Java非访问修饰符 (Java non access modifiers) We have 7 non-access modifiers in Java. The name o ...

  9. java 输出文件到mac路径_Java 中几种获取文件路径的方式

    原标题:Java 中几种获取文件路径的方式 1. 前言 Java开发中我们经常要获取文件的路径,比如读取配置文件等等.今天我们就关于文件的路径和如何读取文件简单地探讨一下. 2. 文件的路径 文件的路 ...

最新文章

  1. 福建省高等学校非计算机考试大纲,福建省高等院校学生计算机一级考试大纲
  2. shell编程面试必会30题
  3. 使用xmake优雅地描述工程
  4. OData API 和 Restful API 这两个概念的区别和联系
  5. node --- Missing write access to 解决
  6. Linux redhat ICE环境安装
  7. Juniper防火墙新手教程8:Juniper防火墙配置的导入及导出
  8. MySQL大表关联如何优化_MySQL 对于大表(千万级),要怎么优化呢?
  9. WorldList3
  10. GNS3中下载路由器
  11. Win10 CMD命令大全 命令提示符常用命令有哪些
  12. java设置word图片居中_Word中怎样快速对齐图片?这样操作,效率提升10倍
  13. 2010考研数学二第(13)题——导数应用题
  14. 一次追踪h5游戏中google广告的经历
  15. 手机设备唯一标识相关概念
  16. 丁俊晖入交大,无悖于“读书无用”论
  17. 腾讯云轻量级服务器宝塔快速部署网站
  18. Windows操作系统+朝鲜红星+国产麒麟+红旗+渗透专用系统+Oracle专用+技术专栏【资源大合集】 | 寻找C站宝藏
  19. 开源社区的技术债:写代码的“码农”VS 删代码的“清道夫”,谁更该被嘉奖?
  20. python全栈开发什么意思_如何快速的学习Python全栈开发?这是腾讯大佬给你的建议!...

热门文章

  1. Android面试宝典2022-(停止更新,请看面试专栏)
  2. dig的现在分词_dig是什么意思_dig在线翻译_英语_读音_用法_例句_海词词典
  3. 编程是一种思想,而不是敲代码
  4. 领导提拔员工看细节,不会容忍这3个“小事”,嘴若太欠后果严重
  5. Redis 集群配置教程
  6. 如何解决TortoiseSVN不显示状态小图标问题
  7. linux kmalloc原理,kmalloc 函数内幕
  8. mysql反三角函数_MySQL-快速入门(4)MySQL函数
  9. 软件分享:网页监测及IIS重启工具
  10. 武汉星河互娱:手游行业热门游戏类型汇总,为休闲娱乐提供新选择