java类成员中的访问级别浅析

我们知道想要访问一个网站,根据身份的不同,会有一些使用上的限制,这就是权限级别的体现。在java的类成员中,有一些访问的级别是需要我们了解的,主要分为四种:public、private、protected、package。下面我们就这四种访问修饰符分别进行详细的介绍。

一、四种访问修饰符

1.public修饰符用于暴露域和方法,以便在类定义的包外部能访问它们。对包和类中必要的接口元素,也需要使用这个级别;main()方法必须是public的,toString()方法也必须是public的。一般不会用public暴露一个域,除非这个域已经被声明为final。(包内访问)

2.private标识的访问模式,表示私有的域和方法只能被同一个类中的其他方法访问,实现了数据隐藏;必要时,可以通过方法访问私有变量。(类内访问)

3.protected修饰符提供一个从包外部访问包(有限制)的方法。在域和方法前增加protected修饰符不会影响同一个包内其他类和方法对它们的访问。要从包外部访问包(其中含有protected成员的类),必须保证被访问的类是带有protected成员类的子类。也就是说,希望包中的一个类被包之外的类继承重用时,就可以使用这个级别。一般应该慎用。(跨包访问)

4.package是默认的保护模式,又叫做包访问,没有任何修饰符时就采用这种保护模式。包访问允许域和方法被同一个包内任何类的任何方法访问。(包中类被包外类继承重用)

二、修饰符说明

1.前三种类型的访问级别使用以下三个关键字之一来指定:public,private或protected。第四种类型称为默认访问级别(或包级别),并且通过不使用访问修饰符来指定。

如果类成员使用public关键字声明为公开,如果类本身可访问的话,则可以从Java代码中的任何位置访问它。

2.如果使用private关键字将类成员声明为私有,则只能在声明类的主体中访问,而在其他任何地方都不能访问。

3.如果使用protected关键字将类成员声明为保护,则可以从同一包中的类或该类的子类来访问此类成员,即使子类位于不同的包中也是可以访问的。

4.如果不为类成员使用任何访问级别修辞符,则它具有包级别访问权限。 具有包级别访问权限的类成员可以从同一个包中访问。

5.类成员的访问级别可以从最严格到最不严格,即:private,package-level,protected和public。

知识点扩展:

类可以是public或default(或包级别)。在本教程中主要介绍 public,private,protected 这几个访问级别修辞符的使用。
类成员的访问级别确定程序的哪个区域可以访问它。 以下四个访问级别修饰符之一可以用于类成员:

  • 公开(public)
  • 私有(private)
  • 保护(protected)

默认或包级别访问
前三种类型的访问级别使用以下三个关键字之一来指定:public,private或protected。第四种类型称为默认访问级别(或包级别),并且通过不使用访问修饰符来指定。

如果类成员使用public关键字声明为公开,如果类本身可访问的话,则可以从Java代码中的任何位置访问它。

如果使用private关键字将类成员声明为私有,则只能在声明类的主体中访问,而在其他任何地方都不能访问。

如果使用protected关键字将类成员声明为保护,则可以从同一包中的类或该类的子类来访问此类成员,即使子类位于不同的包中也是可以访问的。

如果不为类成员使用任何访问级别修辞符,则它具有包级别访问权限。 具有包级别访问权限的类成员可以从同一个包中访问。

到此这篇关于java类成员中的访问级别浅析的文章就介绍到这了,更多相关java类成员中的访问级别有哪些内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java类成员中的访问级别浅析

    我们知道想要访问一个网站,根据身份的不同,会有一些使用上的限制,这就是权限级别的体现.在java的类成员中,有一些访问的级别是需要我们了解的,主要分为四种:public.private.protected.package.下面我们就这四种访问修饰符分别进行详细的介绍. 一.四种访问修饰符 1.public修饰符用于暴露域和方法,以便在类定义的包外部能访问它们.对包和类中必要的接口元素,也需要使用这个级别:main()方法必须是public的,toString()方法也必须是public的.一般不

  • 简单了解Java类成员初始化顺序

    这篇文章主要介绍了简单了解Java类成员初始化顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 类中包含7中成员: 1.静态变量 static 2.final静态常量 final static 3.静态代码块 static{} //多个代码块顺序执行 4.普通变量 5.普通代码块 {} //多个代码块顺序执行 6.构造方法 7.普通方法 类中成员初始化方式(排出7): 非继承类中: 首先执行1/2/3,执行顺序为顺序执行(谁在前先执行谁).

  • Java类成员访问权限控制知识总结

    一 前言 这篇文章是很基础的一文,没多大深度,对于开发人员必然是熟练于心.本篇文章的主题是为什么java要设置类成员访问级别?其原因也很简单,就是为了面向对象的封装特性:将类成员使用不同的访问级别控制,在数据封装后,其他的类成员想要访问当前类成员,就必须要有足够的权限才能访问:这样做的目的就是我可以随意修改不想让其他类成员没有权限访问的数据,只要约定好相关的协议,不影响其他类成员访问即可: 二 权限修饰词介绍 public 意指公有的意思,其修饰的成员权限最低,表示任何成员都可以访问:注意点是一

  • 浅析Java类和数据结构中常用的方法

    1.Object类里面常用的方法: protected Object clone()创建并返回此对象的一个副本. boolean equals(Object obj)指示其他某个对象是否与此对象"相等". protected void finalize()当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法. Class<?> getClass()返回此 Object 的运行时类. int hashCode()返回该对象的哈希码值. void notif

  • 利用反射获取Java类中的静态变量名及变量值的简单实例

    JAVA可以通过反射获取成员变量和静态变量的名称,局部变量就不太可能拿到了. public class Test { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub //获取所有变量的值 Class clazz = Class.forName("com.qianmingxs.ScoreTable"); Field[] fields = clazz.g

  • 浅谈Java 类中各成分加载顺序和内存中的存放位置

    一.什么时候会加载类? 使用到类中的内容时加载:有三种情况 1.创建对象:new StaticCode(); 2.使用类中的静态成员:StaticCode.num=9;  StaticCode.show(); 3.在命令行中运行:java StaticCodeDemo 二.类所有内容加载顺序和内存中的存放位置 利用语句进行分析: 1.Person p=new Person("zhangsan",20); 该句话所做的事情: 1.在栈内存中,开辟main函数的空间,建立main函数的变量

  • Java类和成员上的一些方法实例代码

    isInstance和isAssignableFrom obj instanceof Class 判断obj是不是Class或者Class的子类的实例 clazz.isInstance(obj) 判断obj能不能强制转换成clazz类型,亦即obj是不是clazz或者clazz的子类的实例 clazz1.isAssignableFrom(clazz2) 如果clazz2和clazz1相同,或者clazz1是clazz2的父类则返回True,否则返回Flase static class Paren

  • Java类继承关系中的初始化顺序实例详解

    本文实例讲述了Java类继承关系中的初始化顺序.分享给大家供大家参考,具体如下: Java类初始化的顺序经常让人犯迷糊,现在本文尝试着从JVM的角度,对Java非继承和继承关系中类的初始化顺序进行试验,尝试给出JVM角度的解释. 非继承关系中的初始化顺序 对于非继承关系,主类InitialOrderWithoutExtend中包含了静态成员变量(类变量)SampleClass 类的一个实例,普通成员变量SampleClass 类的2个实例(在程序中的顺序不一样)以及一个静态代码块,其中静态代码块

  • 浅析Java 并发编程中的synchronized

    synchronized关键字,我们一般称之为"同步锁",用它来修饰需要同步的方法和需要同步代码块,默认是当前对象作为锁的对象.在用synchronized修饰类时(或者修饰静态方法),默认是当前类的Class对象作为锁的对象,故存在着方法锁.对象锁.类锁这样的概念. 一.没有设置线程同步的情况 先给出以下代码感受下代码执行的时候为什么需要同步?代码可能比较枯燥,配上业务理解起来就会舒服很多,学生军训,有三列,每列5人,需要报数,每个线程负责每一列报数. class Synchroni

  • Java类和成员变量声明类详解

    目录 声明类 声明成员变量 访问修饰符 类型 变量名 声明类 定义类: class MyClass { // 字段.构造函数和 // 方法声明 } 这是一个类声明.类主体(大括号之间的区域)包含提供从类创建的对象的生命周期的所有代码: 用于初始化新对象的构造函数,提供类及其对象状态的字段的声明,以及方法来实现类及其对象的行为. 前面的类声明是最小的.它仅包含所需的类声明的那些组件.您可以在类声明的开头提供有关该类的更多信息,例如其超类的名称.是否实现任何接口等. 例如: class MyClas

随机推荐