Java类成员访问控制权限
类成员访问控制权限
在JAVA中有四种访问控制权限,分别为:private, default, protected, public
1、Private
如果一个成员方法或变量名前使用了private, 那么这个成员只能在类的内部使用。
2、Default
如果一个成员方法或变量名前没有使用任何访问控制符,就为default。默认的访问控制成员可以被这个包中的其它类访问(包括这个包中的子类内部以及这个包中所有类以对象.成员的方式访问)。如果这个子类不在这个包中,则子类也不能访问父类的默认访问控制成员
3、Protected
这个成员既可以被这个包中其它类访问,也可以被不同包中的子类内部访问
4、Public
可以被所有类访问,不管访问类与被访问类在不在同一个包中
总结
|
Private |
Default |
Protected |
public |
|
|
只用本类内部可访问 |
√ |
√ |
√ |
√ |
|
同一包中的类(包括子类,以及以对象.成员) |
√ |
√ |
√ |
|
|
其它包中的子类内部 |
√ |
√ |
||
|
其它包中的类(对象.成员, 不是子类) |
√ |
以下是示例代码:
1、包myjava.learn.package1:
Person.java
package myjava.learn.package1;
public class Person {
private int a_pri = 10; // private只能在本类被访问, 子类也不能访问
int a_defaut = 11;
protected int a_prot = 12;
public int a_pub = 13;
}
PersonPackage1.java
package myjava.learn.package1;
public class PersonPackage1 extends Person{
void fun(){
// 以下当然可以被访问,因为在同一个包中的类可以访问default, protected, public
this.a_defaut = 12;
this.a_prot = 13;
this.a_pub = 14;
System.out.println( this.a_defaut );
}
}
Main.java
package myjava.learn.package1;
public class Main {
public static void main( String args [] ){
PersonPackage1 pp = new PersonPackage1();
pp.fun();
// 同一包中的类可以以[对象.成员]访问default, protected, public
System.out.println( pp.a_defaut );
System.out.println( pp.a_prot );
System.out.println( pp.a_pub );
}
}
2、包myjava.learn.package2:
Main.java
package myjava.learn.package2; import myjava.learn.package1.PersonPackage1; import myjava.learn.package1.Person; // 其它包中的子类
class PersonPackage2 extends Person{ void PrintAttr(){ // 不同包的子类只能访问父类的public, protected
System.out.println(this.a_prot);
System.out.println(this.a_pub ); } } public class Main { public static void main(String[] args) {
// TODO Auto-generated method stub // 其它包中的类(对象.成员, 不是子类),只能访问public成员
PersonPackage1 pp = new PersonPackage1();
System.out.println(pp.a_pub); PersonPackage2 pp2 = new PersonPackage2();
pp2.PrintAttr(); } }
Java类成员访问控制权限的更多相关文章
- java类成员访问权限总结(private,default,protected,public)
- Java基础详解 (一)Java的类成员访问权限修饰词(以及类访问权限)
在一个类的内部,其成员(包括成员变量和成员函数)能否被其他类所访问,取决于该成员的修饰词.Java的类成员访问权限修饰词有四类:private,无(默认情况下),protected和public.其权 ...
- java基础-类成员访问权限控制
一 前言 这篇文章是很基础的一文,没多大深度,对于开发人员必然是熟练于心.本篇文章的主题是为什么java要设置类成员访问级别?其原因也很简单,就是为了面向对象的封装特性:将类成员使用不同的访问级别控制 ...
- Java 类成员的初始化顺序
Java 类成员的初始化顺序 前言:开发中碰到一个Java文件中有很多的成员变量,包括静态和非静态的,还有很多的初始化方法,很好奇这些成员的初始化顺序,在这里作个研究. 1 无继承情况下的Jav ...
- JAVA基础之访问控制权限
包:库单元 1.当编写一个Java源代码文件时,此文件通常被称为编译单元(有时也被称为转译单元). 2.每个编译单元都必须有一个后缀名.java,而在编译单元内则可以有一个public类,该类名称必须 ...
- Java中的访问控制权限
简介 Java中为什么要设计访问权限控制机制呢?主要作用有两点: (1)为了使用户不要触碰那些他们不该触碰的部分,这些部分对于类内部的操作时必要的,但是它并不属于客户端程序员所需接口的一部分. (2) ...
- Java类成员之内部类
内部类含义: 在Java中允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类. Inner class 一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称. Inner ...
- java类成员变量与代码块初始化
首先根据下面的这个一段代码:引入关于java初始化顺序的问题public class InitationTest extends Person { public InitationTest() { S ...
- 【转】Java类成员变量默认初始化规则
一个变量作为类成员使用的时候,如果没有被初始化,java会为其分配默认值: -------------------------------------------------------------- ...
随机推荐
- HDU 1358字符串循环节问题 ,next数组
求字符串循环节,要求每前i个字符串前缀是否循环,有的话打印出来. 我对j=next[i]数组(未优化,从0开始,第一个为-1,)理解:字符s[i]的前面的字符串,最长的相同的前缀和后缀 的长度,因此, ...
- [NOIP2012T3]开车旅行
题目描述 NOIP 2012 提高组 题3小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 ...
- 电音中DJ/Producer/MC/EDM/Remix/Mix的名词解释(转)
DJ DJ是Disc Jockey的缩写,是电音圈子里的一种热门职业,一般大家在夜店或者酒吧看到的站在台上甩着膀子拧着按钮或者使劲儿搓碟的就是DJ啦. DJ的主要工作一般就是在现场用打碟机和混音台把许 ...
- 使用Myeclipse + SVN + TaoCode 免费实现项目版本控制的详细教程
通过Myeclipse + SVN插件 + TaoCOde可以省去代码仓库的租建:同时还可以很好的满足小团队之间敏捷开发的需求.接下来详细介绍整个搭建流程. 首先,介绍所用到的工具: 1,Myecli ...
- MySql视频教程——百度云下载路径
百度云分享MySql视频教程给大家.祝大家事业进步! MySql视频教程:http://pan.baidu.com/s/1gdCHX79 password:n46i
- 浅谈xss原理
近日,论坛上面XSS满天飞,各处都能够见到XSS的痕迹,前段时间论坛上面也出现了XSS的迹象.然后我等小菜不是太懂啊,怎么办?没办法仅仅有求助度娘跟谷歌这对情侣了. 能够说小菜也算懂了一些.不敢藏私, ...
- maven插件介绍之maven-jar-plugin
maven-jar-plugin 插件的maven依赖为: <dependency> <groupId>org.apache.maven.plugins</groupId ...
- CSS属性中Display与Visibility的不同
大多数人很容易将CSS属性display和visibility混淆,它们看似没有什么不同,其实它们的差别却是很大的.visibility属性用来确定元素是显示还是隐藏,这用visibility=&qu ...
- 理解CSS中的BFC(块级可视化上下文)[译]
开篇 一些元素,如float元素,如position为absolute,inline-block,table-cell或table-caption的元素,以及overflow属性不为visible的元 ...
- 浅谈C#中常见的委托
一提到委托,浮现在我们脑海中的大概是听的最多的就是类似C++的函数指针吧,呵呵,至少我的第一个反应是这样的. 关于委托的定义和使用,已经有诸多的人讲解过,并且讲解细致入微,尤其是张子阳的那一篇.我就不 ...