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会为其分配默认值: -------------------------------------------------------------- ...
随机推荐
- P1067 多项式输出 (模拟)
题目描述 一元nn次多项式可用如下的表达式表示: 其中,a_i x^i 称为i次项,ai 称为i次项的系数.给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项式: 多项式中自变量 ...
- T3187 队列练习3 codevs
http://codevs.cn/problem/3187/ 题目描述 Description 比起第一题,本题加了另外一个操作,访问队头元素(编号3,保证访问队头元素时或出队时队不为空),现在给出这 ...
- 解密优秀博士成长史 ——微软亚洲研究院首届博士生学术论坛Panel讨论经验总结
编者按:有人说“一入博门深似海”,读博前应该做好哪些准备?作为一名博士生,应该有怎样的学术或职业规划?导师还是老板?怎样在师生关系上做到双赢?你是导师心目中优秀的博士生吗?相信以上问题在很多同学心中萦 ...
- 通过BSSID和无线流量传输后门Payload
本文将探讨无线接入点(AP)和BSSID(MAC地址AP).我们不借助文件系统加密和文件系统中(仅内存中)的硬编码Payload即可获得后门Payload,通过该方法可绕过所有的杀软,可以不使用Pay ...
- xgboost调参
The overall parameters have been divided into 3 categories by XGBoost authors: General Parameters: G ...
- 文件重定向,getline()获取一样,屏幕输出流,格式控制符dec,oct,hex,精度控制setprecision(int num),设置填充,cout.width和file(字符),进制输入
1.在window下的命令重定向输出到文件里 2.将内容输入到某个文件里的方式:命令<1.txt (使用1.txt中的命令) 3.读取文件里的名,然后将命令读取最后输出到文件里.命令< ...
- BUPT复试专题—众数(2014)
题目描述 有一个长度为N的非降数列,求数列中出现最多的数,若答案不唯一输出最小的数 输入 第一行T表示测试数据的组数(T<100) 对于每组测试数据: 第一行是一个正整数N表示数列长度 第二行有 ...
- 阿里云OSS 图片处理api(custom)
阿里云OSS 图片处理api(custom) 阿里云对象存储服务(Object Storage Service, 简称OSS) 学习了:https://blog.csdn.net/u014559227 ...
- 【软件project】菜鸟俯瞰软件project
[背景]初次接触软件project,对软件project不是彻底的了解.但学完一遍软件project,我还是有些感触的. 以下我就对我这阶段的软工学习和理解做一下小小的总结,如有不妥之处.欢迎指正. ...
- C++简单实现对象引用计数示例(转)
C++简单实现对象引用计数示例 #include <iostream> #include <stdio.h> using namespace std; class String ...