类成员访问控制权限

在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类成员访问控制权限的更多相关文章

  1. java类成员访问权限总结(private,default,protected,public)

  2. Java基础详解 (一)Java的类成员访问权限修饰词(以及类访问权限)

    在一个类的内部,其成员(包括成员变量和成员函数)能否被其他类所访问,取决于该成员的修饰词.Java的类成员访问权限修饰词有四类:private,无(默认情况下),protected和public.其权 ...

  3. java基础-类成员访问权限控制

    一 前言 这篇文章是很基础的一文,没多大深度,对于开发人员必然是熟练于心.本篇文章的主题是为什么java要设置类成员访问级别?其原因也很简单,就是为了面向对象的封装特性:将类成员使用不同的访问级别控制 ...

  4. Java 类成员的初始化顺序

    Java 类成员的初始化顺序 前言:开发中碰到一个Java文件中有很多的成员变量,包括静态和非静态的,还有很多的初始化方法,很好奇这些成员的初始化顺序,在这里作个研究.   1  无继承情况下的Jav ...

  5. JAVA基础之访问控制权限

    包:库单元 1.当编写一个Java源代码文件时,此文件通常被称为编译单元(有时也被称为转译单元). 2.每个编译单元都必须有一个后缀名.java,而在编译单元内则可以有一个public类,该类名称必须 ...

  6. Java中的访问控制权限

    简介 Java中为什么要设计访问权限控制机制呢?主要作用有两点: (1)为了使用户不要触碰那些他们不该触碰的部分,这些部分对于类内部的操作时必要的,但是它并不属于客户端程序员所需接口的一部分. (2) ...

  7. Java类成员之内部类

    内部类含义: 在Java中允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类. Inner class 一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称. Inner ...

  8. java类成员变量与代码块初始化

    首先根据下面的这个一段代码:引入关于java初始化顺序的问题public class InitationTest extends Person { public InitationTest() { S ...

  9. 【转】Java类成员变量默认初始化规则

    一个变量作为类成员使用的时候,如果没有被初始化,java会为其分配默认值: -------------------------------------------------------------- ...

随机推荐

  1. InitializingBean

    org.springframework.beans.factory包下有一个接口是InitializingBean 只有一个方法: /**  * Invoked by a BeanFactory af ...

  2. stm32f103c8t6命名

    stm32f103c8t6和stm32f103rbt c8:48脚.64k :rb:64脚.128k.

  3. T13432 1.计数

    题目描述 给出m个数a[1],a[2],…,a[m] 求1~n中有多少数不是a[1],a[2],…,a[m]的倍数. 输入输出格式 输入格式: 输入文件名为count.in. 第一行,包含两个整数:n ...

  4. 2.JAVA语言基础部分

    1.语言基础 二进制操作 "&"按位与:a与b同时为1结果为1,否则为0: "|"按位或:a与b其中任一个为1,否则为0 "~"按位 ...

  5. ssh 卡主

    偶尔会遇到这样的现象 ssh 登录一台远程机器,显示下面的信息然后hang在那 Connecting to 192.168.137.102:22... Connection established. ...

  6. linux 状态与系统调优

    什么样的cup 才算是负载高呢?才算忙呢?

  7. 数据库官方在线文档列表(mysql, postgreSQL)

    1. mysql http://dev.mysql.com/doc/ 2. postgreSQL https://www.postgresql.org/docs/

  8. sql select(A.B)拼接

    需要做的工作:把DBtable里边的某两个字段,(当然可以更多)或者不同表,道理类似,用某个符号拼接起来. 比如(Table.A).(Tables.B) oracle里边可以这样写,sql没试: se ...

  9. VB.net版机房收费系统——结账功能实现(调错与优化)

    调错部分 上一篇博客<VB.net版机房收费系统--结账功能实现(代码部分>说的是结账功能的实现,亮出了代码.是在为这篇博客做铺垫.尽管结账功能代码是借鉴的巨人的博客.可是自己比着葫芦画瓢 ...

  10. linux led子系统(一)

    就像学编程第一个范例helloworld一样,学嵌入式,单片机.fpga之类的第一个范例就是点亮一盏灯.对于庞大的linux系统,当然可以编写一个字符设备驱动来实现我们需要的led灯,也可以直接利用g ...