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会为其分配默认值: -------------------------------------------------------------- ...
随机推荐
- MongoDB数据类型查询与修改
MongoDB数据类型和对应的代码如下: MongoDB可以根据字段类型进行文档查询: 可以看到,friend集合的文档中,age字段有32位int类型的,也有double类型的.如果需要把doubl ...
- vba功能语句
VBA语句集(第1辑) 定制模块行为(1) Option Explicit '强制对模块内所有变量进行声明Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏 ...
- VScode开发Vue初尝试(一)
由于公司近期有新的H5项目开发,而前端的同事也离职了,所以就临时顶缸,研究学习一下Vue框架开发. 本人也是初学,在学习过程中,把一些学习所得分享出来,可能会有很多问题和疏漏,希望大家能够多多指正,共 ...
- Unity3D 对象池思想 在游戏开发中的运用
分类:U3D 1.在王者荣耀中,每30秒小兵会出现一波,出现之后会被敌方玩家或敌方小兵销毁,一局游戏下来,小兵会被创建多次,同时也会被销毁,在游戏中,这种频繁的创建和销毁游戏对象是很损耗性能的.在游戏 ...
- Hibernate 与Mybatis之比较
1. hibernate是全自动,而mybatis是半自动.hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql.而mybat ...
- 多个Nginx如何实现集群(没具体方案,只是初步探究)
场景: Nginx+Web服务器可以实现负载均衡,但是一台Nginx也是有限的,如果并非量高的话,在他的上层如何实现负载均衡. 如果是DNS或者CDN的话,建多个机房,势必有多个机房数据同步的问题. ...
- 解决Linux系统没有/etc/sysconfig/iptables文件
Linux系统中,防火墙默认是不开启的,一般也没有配置过任何防火墙的策略,所以不存在/etc/sysconfig/iptables文件. 一.常规解决方法: 1.在控制台使用iptables命令随便写 ...
- Java并发编程(三)volatile域
相关文章 Java并发编程(一)线程定义.状态和属性 Java并发编程(二)同步 Android多线程(一)线程池 Android多线程(二)AsyncTask源代码分析 前言 有时仅仅为了读写一个或 ...
- java 短信猫发送短信的方法
用java实现短信收发的功能,目前一般项目中短信群发功能的实现方法大致有下面三种: · 1. 向运行商申请短信网关,不需要额外的设备,利用运行商提供的API调用程序发送 ...
- LeetCode232 Implement Queue using Stacks Java 题解
题目: Implement the following operations of a queue using stacks. push(x) -- Push element x to the bac ...