修饰词public、private、protected、默认、四者之间的区别
在Java语法中,对于类与类中的成员变量和成员方法是通过访问控制符来区分控制的。
下面来看看这四种访问控制符的区别:(public、protected、private、default)
1.public:public修饰的数据成员和成员函数是公开的,所有的用户都可以进行调用。
2.private:private修饰词修饰的成员变量以及成员方法只供本类使用,也就是私有的,其他用户是不可调用的。
3.protected:protected修饰词修饰的成员变量以及成员方法在同一个包中无论是其子类还是普通类都可以调其使用,在不同包中只供其子类调用。
4.default:default修饰词修饰的成员变量以及成员方法在同一个包中无论是其子类还是普通类都可以调用,在不同包中即使是子类也不可调用,这一点与protected修饰词存在其两者明显的区别,谨记区分。
这里对于public和private修饰词不做明细的区分,因为这两个修饰词不存在不难懂的地方;下面就protected和default修饰词用以贴代码的形式进行其区分比较如下:
首先我们创建一个类:类中用protected修饰词修饰变量
在同一个包中有一个类继承了这个类的话,那么就可以使用这个protected修饰的变量,同时在同一个包中,即使没有继承上面的类的话也是可以使用protected修饰的变量a;
在不同的包中,直接访问protected修饰词修饰的变量a,是不可以的,如下:
在不同包中,如果是继承了protected修饰变量a的那个类的话,那就可以调用protected修饰变量a了;
我们再来看看默认default修饰词修饰的变量,也是首先创建一个默认修饰变量的类:
和protected修饰词一样。只要是在同一个包中,无论是普通类还是继承修饰变量的那个类都可以直接访问默认修饰词修饰的变量a;
在不同的包中,和protected一样,是不能直接使用default修饰词修饰的变量a的,如下:
在不同的包中,default修饰的变量,即使是继承类修饰变量的那个类也是不可以调用变量a的,这一点和protected存在本质的区别:
最后做了个总结:
private是只有本类中才能访问,public是都能访问,默认(包访问权限)是只有本包内才能访问,包括本包内的子类和普通类,而protected是只要本包内就能访问,包括本包内的子类和普通类,另外别的包内的子类也能访问,但是普通类不能访问。所以说protected和默认(包访问权限)是很相似的,在同一个包内,它们是一样的,而在另一个包内,默认是不能访问的,而protected是只有子类能访问。
为了美观的呈现区别以便看起来更容易区分,特附与表格一张:
修饰词public、private、protected、默认、四者之间的区别的更多相关文章
- 关于Java的权限修饰符(public,private,protected,默认friendly)
以前对访问修饰符总是模棱两可,让自己仔细解释也是经常说不很清楚.这次要彻底的搞清楚. 现在总结如下: 一.概括总结 各个访问修饰符对不同包及其子类,非子类的访问权限 Java访问权限修饰符包含四个:p ...
- java作用域public ,private ,protected 及不写时的区别(转)
在说明这四个关键字之前,我想就class之间的关系做一个简单的定 义,对于继承自己的class,base class可以认为他们都是自己的子 女,而对于和自己一个目录下的classes,认为都是自己的 ...
- java作用域public ,private ,protected 及不写时的区别
说明部分转自:http://yangmingjiayou.iteye.com/blog/151865 在说明这四个关键字之前,我想就class之间的关系做一个简单的定义,对于继承自己的class,ba ...
- PHP public private protected 三种修饰符的区别
public 表示全局,类内部外部子类都可以访问:private表示私有的,只有本类内部可以使用:protected表示受保护的,只有本类或子类或父类中可以访问:
- Java中public,private,protected,和默认的区别
Java中public,private,protected,和默认的区别 1.private修饰词,表示成员是私有的,只有自身可以访问: 2.protected,表示受保护权限,体现在继承,即子类可以 ...
- public private protected和默认的区别(转自百度)
public private protected和默认的区别 Java中对类以及类中的成员变量和成员方法通过访问控制符(access specifier)进行区分控制.刚学Java语言的同学可能对pu ...
- 深入浅出OOP(五): C#访问修饰符(Public/Private/Protected/Internal/Sealed/Constants)
访问修饰符(或者叫访问控制符)是面向对象语言的特性之一,用于对类.类成员函数.类成员变量进行访问控制.同时,访问控制符也是语法保留关键字,用于封装组件. Public, Private, Protec ...
- php class中public,private,protected的区别,以及实例
一,public,private,protected的区别 public:权限是最大的,可以内部调用,实例调用等. protected: 受保护类型,用于本类和继承类调用. private: 私有类型 ...
- 访问权限系列一(public/private/protected/default):成员变量
通过两个程序包对自身或互相之间的访问,得到结果.(先编译Test_01,得到class文件,通过Test的集中访问情况) 如下Test.java中内容: package com.java; /* * ...
- public private protected default
public private protected default 这几个限定访问控制符只是在编译阶段起作用,在运行阶段不起作用 private修饰符 , 本类可以访问 default修饰符 , 本类, ...
随机推荐
- Linux下Mysql的odbc配置
在安装配置之前,需要先大概了解一下MyODBC的架构. MyODBC体系结构建立在5个组件上,如下图所示: Driver Manager: 负责管理应用程序和驱动程序间的通信,主要功能包括:解析DSN ...
- 利用NPOI导出数据到Execl
相信很多童鞋都开发过Execl的导入导出功能,最近产品中无论是后台数据分析的需要,还是前端满足用户管理的方便,都有Execl导入导出的维护需求产生. 以前做这个功能,如果是web,利用HttpCont ...
- cocos源码分析--RenderTexture
cocos中RenderTexture主要用来实现截屏,然后把截取出来的图片保存到磁盘中,除了保存图片和渲染纹理,它还可以得到一些预渲染结果,并将这些结果作为一种纹理数据. 例如我们可以用RGB5_A ...
- 解决Centos7不能联网且ifconfig出现command not found
在虚拟机中以最小化方式安装centos7,后无法上网,因为centos7默认网卡未激活. 而且在sbin目录中没有ifconfig文件,这是因为centos7已经不使用 ifconfig命令了,已经用 ...
- git 使用教程(二)
MyEclipse下使用GitHub方法(Eclipse同理) 原创 2016年01月04日 20:30:25 标签: myeclipse / 软件 / git / github / eclipse ...
- iOS保存gif动态图
- (void)saveImageToPhotos:(NSData*)gifData { /***注意先倒入库 #import <AssetsLibrary/AssetsLibrary.h> ...
- py库: pyautogui (自动测试模块,模拟鼠标、键盘动作)
PyAutoGUI 是一个人性化的跨平台 GUI 自动测试模块 pyautogui 库 2017-10-4 pip install pyautogui python pip.exe install p ...
- Eclispe让SVN插件显示英文
eclipse\configuration\config.ini 文件添加以下内容: # Set Subversion English Version osgi.nl=en_US
- Dubbo(2)--Dubbo常用配置文件解析及核心源码阅读
1.多版本支持 服务端 创建第二个接口实现类 package com.lf; public class HelloImpl2 implements IHello{ @Override public S ...
- mysql高级聚合
GROUP_CONCAT() 函数的值等于属于一个组的指定列的所有值,以逗号隔开,并且以字符串表示 mysql> select sex,group_concat(level) from role ...