黑马程序员--Java学习10--访问权限_保护变量和友好变量在继承时的差别-程序员宅基地

技术标签: private public prote  

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

一、访问权限

1、私有变量和私有方法

      用关键字private 修饰的成员变量和方法称为私有变量和私有方法,私有只在本类中有效,只有在本类中创建该类的对象时,这个对象才能访问自己的私有成员变量和方法。

      private 常用之一:将成员变量私有化,对外提供对应的set,get方法对类进行访问,提高对数据的访问安全性。

如:

class Tom {
	private float weight;//weight被修饰为私有的float型变量
	private float f(float a,float b) {//方法f是私有方法
		....
	}
}

      如果Tom类中的某个成员变量是私有类变量,那么在另一个类中,也不能通过类名Tom来操作这个私有类变量。如果Tom类中的某个方法是私有的类方法,那么在另一个类中,也不能通过类名来调用这个私有类方法。

2、共有变量和共有方法

     用public修饰的成员变量和方法称为共有变量和共有方法。如:

class Tom {
	public float weight;//weight被修饰为public的float型变量
	public float f(float a,float b) {//方法f是public方法
		....
	}
}

      当在任何一个类中用类Tom创建了一个对象后,该对象能访问自己的public变量和类中的public方法。如:

class Jerry {
	void g() {
		Tom cat = new Tom();
		cat.weight = 23f;//合法
		cat.f(3,4);//合法
	}
}

      如果Tom 类中的某个成员变量是public类变量,那么在任何一个类中,也可以通过类名Tom来操作Tom的这个成员变量。如果Tom类中的某个方法是public类方法,那么在任何一个类中,也可以通过类名Tom 来访问这个public方法。


3、受保护的成员变量和方法

      用protected修饰的成员变量和方法被称为受保护的成员变量和受保护的方法。如:

class Tom {
	protected float weight;//weight被修饰为protected的float型变量
	protected float f(float a,float b) {//方法f是protected方法
		....
	}
}

     当在另外一个类中用类Tom创建了一个对象后,如果这个类与类Tom 在同一个包中,那么该对象能访问自己的protected变量和和Protected方法。在任何一个与Tom同一包中的类中,也可以通过Tom类的类名访问Tom类的protected类变量和protected类方法。

    假如Jerry与Tom是在同一包中的类,那么,Jerry类中的cat.weight、cat.f(3,4)都是合法的:

class Jerry {
	void g() {
		Tom cat = new Tom();
		cat.weight = 23f;//合法
		cat.f(3,4);//合法
	}
}


注:在后面介绍子类时,将介绍”受保护(protected)“和”友好的“之间在继承方面的区别。

4、友好变量和友好方法

     不用private、public、protected修饰符的成员变量和方法被称为友好变量和友好方法。如:

class Tom {
	float weight;//weight是友好的float型变量
	float f(float a,float b) {//方法f是友好方法
		....
	}
}

     当在另一个类中用类Tom创建了一个对象后,如果这个类与Tom类中同一个包中,那么该对象能访问自己的友好变量和友好方法。在任何一个与Tom同一包中的类中,也可以通过Tom 类的类名访问Tom类的类友好变量和类友好方法。

    假如Jerry与Tom是在同一包中的类,那么,Jerry类中的cat.weight、cat.f(3,4)都是合法的:

class Jerry {
	void g() {
		Tom cat = new Tom();
		cat.weight = 23f;//合法
		cat.f(3,4);//合法
	}
}

    在源文件中编写命名的类总是在同一包中。如果你在源文件中用import语句导入了另外一个包中的类,并用该类创建了一个对象,那么该类的这个对象不能访问自己的友好变量和友好方法。

5、public类与友好类

      类声明时,如果关键字class前面加上public关键字,就称这样的类是一个public类,如:

public class A {
	....
}

      可以在任何另外一个类中,使用public类创建对象。如果一个不加public修饰,如:

class A {
	....
}

这样的类称为友好类,那么另外一个类中使用友好类创建对象时,要保证他们是在同一个包中。

注:(1)不能用protected和private修饰类

        (2)访问权限的级别排列,按访问权限从高到底排列序列是public、protected、友好的、private。


---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weiye_csdn/article/details/26070735

智能推荐

自然人机交互到底“自然”在哪儿?_自然交互优点-程序员宅基地

文章浏览阅读8.4k次,点赞2次,收藏11次。转自 雷锋网https://www.leiphone.com/news/201701/tfL1l0y3heIGWVre.html?from=timeline&viewType=weixin无论是开创智能手机时代的 iPhone,还是如今很热门的 VR/AR 和人工智能,再到苹果新 Macbook Pro 的亮点 Touchbar。人机交互的创新是消费科技产品进步的核心。而在这个..._自然交互优点

程序包javax.persistence不存在解决办法_没有javax.persistence.generatedvalue包-程序员宅基地

文章浏览阅读2.3w次,点赞15次,收藏12次。maven添加<dependency> <groupId>javax.persistence</groupId> <artifactId>persistence-api</artifactId> <version>1.0.2</version></dependency>_没有javax.persistence.generatedvalue包

keras, TensorFlow中加入注意力机制_tensorflow 插入注意力机制-程序员宅基地

文章浏览阅读1w次,点赞26次,收藏263次。第一步:找到要修改文件的源代码在里面添加通道注意力机制和空间注意力机制所需库from keras.layers import GlobalAveragePooling2D, GlobalMaxPooling2D, Reshape, Dense, multiply, Permute, Concatenate, Conv2D, Add, Activation, Lambdafrom keras..._tensorflow 插入注意力机制

使用 pg_dump 和 pd_dumpall 备份数据库-程序员宅基地

文章浏览阅读6k次。目录概述备份与恢复逻辑备份/恢复pg_dump 常用参数说明pg_restore常用参数说明pg_dump 使用样例1 脚本文件范式恢复(单个表)2 二进制文件备份 pg_restore 恢复(整个数据库)3 压缩备份4 并行备份概述主要记录一下如何使用postgresql自带的数据库备份工具。例如pg_dump 和 pg_dumpall 的使用。备份数据库是数据库管理中最关键的任务之一。 ..._pd_dumpall

个站建设基础教程-程序员宅基地

文章浏览阅读429次。什么是 HexoHexo 是一个静态网站生成器,基于 Hexo 框架,可以生成自己想要的网站风格,以及网站内容,样式自己可以定义。实战环境准备系统:win7 +nodejs:htt..._个站

随便推点

pytorch一元二次函数 拟合 机器学习_pytorch 拟合二次函数-程序员宅基地

文章浏览阅读2.2k次,点赞3次,收藏22次。1.创建数据import torchimport matplotlib.pyplot as pltx=torch.unsqueeze(torch.linspace(-1,1,100),dim=1) #x data(tensor),shape=(100,1)y=x.pow(2)+0.2*torch.rand(x.size())#画图plt.scatter(x.data.numpy()..._pytorch 拟合二次函数

PX4从放弃到精通(十六):控制接口_px4从放弃到精通(十四)-程序员宅基地

文章浏览阅读4.2k次,点赞8次,收藏61次。PX4固件版本1.12.3_px4从放弃到精通(十四)

关于fofa的一些Tips_fofa key-程序员宅基地

文章浏览阅读4.4k次,点赞6次,收藏37次。正文今天分享一个白嫖FOFA会员的Tips1977×650 24.3 KB可以到GitHub上搜索fofa key的关键字fofa_api、fofa_key、fofa_email就能找到,一些开发者,忘记在程序中删除的fofa api key,上面有的key有用有的可能更新了api key21092×766 32.8 KB31494×914 49 KB再分享一下,fofa上有趣的搜索语句,以下语句摘录自白帽汇官方公众号的活动:搜集FOFA的有趣搜索语句Shadowsocks-Ma._fofa key

安装和使用Entrez Direct-程序员宅基地

文章浏览阅读5.5k次,点赞4次,收藏12次。安装和使用Entrez Direct软件#到home目录下cd#等同于用~/ ,~/ 表示你的home目录cd ~/#创建/local/app目录来存放需要安装的程序mkdir -p ~/local/app#进入app目录cd ~/local/app获取entrez direct 工具包#大写 -O 是使得curl 命令去识别url上的文件名(作为下载后的文件名字)curl ftp:/_entrez direct

ESP8266 基础篇:启动时 rst cause 和 boot mode_ets jan 8 2013,rst cause:2, boot mode:(3,6)-程序员宅基地

文章浏览阅读1.3w次,点赞12次,收藏62次。简介在 ESP8266 启动时, ROM CODE 会读取 GPIO 状态和 rst cause 状态, 进而决定 ESP8266 工作模式.通过了解和掌握 rst cause 和 boot mode, 有助于定位某些系统问题.ROM CODE 波特率为 74880.ESP8266 启动时 rst causeESP8266 启动时会有如下打印:ets Jan 8 2013, rst..._ets jan 8 2013,rst cause:2, boot mode:(3,6)

Python:列表有趣挑战--斗地主扑克牌发牌_几个人用一副扑克牌玩游戏,游戏过程通常有洗牌、发牌、理牌等动作,编写程序模拟游-程序员宅基地

文章浏览阅读5.9k次,点赞4次,收藏16次。目录游戏描述:题目分析与关键点:代码参考:游戏描述:本题限定用以下方法打乱序列中的元素random.shuffle()几个人用一副扑克牌玩游戏,游戏过程通常有洗牌、发牌、理牌等动作,编写程序模拟游戏过程。新牌花色顺序为""、""、""、""花色相同时按2、3、4、5、6、78、9、10、J、Q、K、A,最后是小王和大王排序。小王用jokers、大王用JOKERS表示。按以下要求编写程序:1.按顺序输出新牌2.按洗好的顺序输出洗过的牌3.将牌轮流分给参与_几个人用一副扑克牌玩游戏,游戏过程通常有洗牌、发牌、理牌等动作,编写程序模拟游