public private protected和默认的区别

Java中对类以及类中的成员变量和成员方法通过访问控制符(access specifier)进行区分控制。刚学Java语言的同学可能对public private protected以及默认(一般称包访问权限)的区别不是很清楚,尤其是protected和默认的区别。本篇就来说说这个事儿。

操作方法

  • 01

    private这个大家都知道,就是只有在本类中才能访问。

  • 02

    public正好和private相反,在任何地方都能访问。

  • 03

    protected是在本包内能访问,而在包外只有它的子类能访问。如图,package1这个包中有一个A类,它有一个成员变量a,用protected访问控制符进行修饰。

  • 04

    如图,在本包中另一个类继承自A,它是可以访问A的这个成员变量的。如果是本包中的一个普通类(也就是不继承自A),也是可以访问A的成员变量的,这个大家可以自行测试。

  • 05

    如图,在别的包中的一个普通类访问A的成员变量,这个是不可以的。

  • 06

    但是在别的包中的子类,也就是继承自A的类,访问A的成员变量是可以的。

  • 07

    再来说默认(包访问权限)。如图,还是package1中的A类的成员变量a,这一次什么也不加。

  • 08

    和protected一样,只要是同一个包下的类,不管是子类还是其它普通的类,都可以访问A的这个成员变量。

  • 09

    在另一个包中的类,如果是普通类,和protected一样,是不能访问A类中的这个成员变量的。

  • 10

    在另一个包中的类,即使是子类,也是不能访问A类中的这个成员变量的。这一点和protected不一样。

  • 11

    总结一下,private是只有本类中才能访问,public是都能访问,默认(包访问权限)是只有本包内才能访问,包括本包内的子类和普通类,而protected是只要本包内就能访问,包括本包内的子类和普通类,另外别的包内的子类也能访问,但是普通类不能访问。所以说protected和默认(包访问权限)是很相似的,在同一个包内,它们是一样的,而在另一个包内,默认是不能访问的,而protected是只有子类能访问。

(0)

相关推荐

  • 如何区别java中的public,private,protected

    在java语言中我们描述一个类或者一个方法,经常会用到public,private,protected三个关键字,还有一种就是默认的访问权限,即什么都不写.本文将对这四种进行区别. 四种访问权限的解释 ...

  • 证明Java中子类继承了父类的private属性

    针对网上流传的两种能与不能的说法,都没有很强说服力的证据.因此,小编使用Android Studio的Debug模式分析了内存变量,发现了子类有父类变量,但最后找到了java官网最权威的解释:子类不能 ...

  • java面试——java基础

    这些面试题是我在面试的时候一些真实经历,经过整理后有以下这些,希望对于还没有太多java软件开发实际工作经验,而正在努力寻找java软件开发工作的朋友在笔试时更好地赢得笔试和面试. java基础面试题 ...

  • C++ 语言命令大全

    C++的基础指令功能及其使用方法. 操作方法 01 常用程序包文件: #include <stdio.h> #include <tchar.h> #include<ios ...

  • 怎样熟练掌握java修饰符?

    本文以清晰的思路告诉你java修饰符的相关知识 操作方法 01 java的修饰符有:权限修饰符:public.protected.default.private 修饰符:abstract.static ...

  • C#知识点整理【精华】

    操作方法 01 C#是面向组件的语言编程语言趋势:自包含自描述 垃圾回收异常处理类型安全 C#继承与c++与Java的糅合 版本控制 virtual override .cs作为扩展名 命名空间程序类 ...

  • 使ssh登陆不用输入密码的方法

    有些时候,我们在复制/移动文件到另一台机器时会用到scp,因为它比较安全。但如果每次 都要输入密码,就比较烦了,尤其是在script里。不过,ssh有另一种用密钥对来验证的方 式。下面写出我生成密匙对 ...

  • CentOS 6.3下使用Gitosis安装搭建Git Server教程

    Git作为一个分布式的版本控制系统,使用git的时候,一般和服务器通讯使用的是ssh协议,用ssh的主要优点是速度快(传输前数据会先压缩,比HTTP快),安全,方便读写。 客户端通过ssh访问服务器端 ...

  • Linux上最常用的用户名和密码 有的快改

    下图截取自 DRG SSH Username and Password Authentication Tag Clouds,看看有没有自己常用的密码,有的话赶快换吧。 如果对 ssh 还不放心的话可以 ...