`
zy77612
  • 浏览: 283469 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java成员变量和方法的public等访问限定符的访问权限

 
阅读更多

在学习java的过程中,我写类经常会用到public,private 和protected 的,我的基本经验就是一般类的成员变量都是用private, 方法用public,类内部用的方法用protected,如果是存在子类的,那我就会把父类中的成员变量变为protected。(其余的看具体实际情况而定)

不过在一些公司的笔试题中,他们会要求你具体的写出像public这些访问限定符的作用域。其实,平常我都没去系统的考虑这些访问限定符的作用域,特别是包内包外的情况,OK,笔试不行了。

这是java基本的知识,也是公司看重的,那没办法啦,我的脑袋记不住东西,那我只能把这些东西写下来方便自己温故知新。

类的访问权限表
成员权限 本类 子类 包内 外部
public

protected

-

private

-

-

-

默认(无)

-

 -

貌似默认(无)是friendly

注意: 可以把默认,也就是没加任何访问限定符,理解为"包访问",在子类中不能直接访问,但在同包中的类却可以访问

如果你看到这里还不是很了解上面的表,或者是很久就没看书了,忘记了上面的表的内容的意义,那下面的例子就是帮助你温故知新的好东东。

例如,有一个包demo中的类P,它有一个 private 成员变量data, 一个public 默认构造方法, 一个public 访问方法getData(), 一个protected修改方法setData(),还有一个默认访问方式的辅助方法print()

 package demo;

public class P{

      private int data;

      public P(){

               setData(0);

      }

      public int getData(){

              return data;

      }

      protected void setData(int v){

               data = v;

      }

      void print(){

             System.out.println("used!")

     }

}

本类的不用说了,在本类里面才不管什么访问限定符呢。

如有类Q,扩展了P,所以可以调用P的默认构造方法、访问方法getData()和修改方法setData()。但类Q不能直接访问P的成员变量data,辅助方法print()也不行(可以把默认,也就是没加任何访问限定符,理解为"包访问",在子类中不能直接访问,但在同包中的类却可以访问)。

import demo.P

public class Q extends P{

        public Q(){

              super(); <---------------------------Q可以访问父类的默认构造方法

       }

       public Q(int v){

              setData(v); <------------------------Q可以访问父类的protected的方法 

       }

       public String toString(){

               int v = getData(); <--------------------Q可以访问父类的public的方法

               return String.valueOf(v);

       }

       public void invalid1(){

                data = 12; <---------------------------Q不能直接访问父类的private数据域

       }

       public void invalid2(){

                print();  <-------------------------------Q不能直接访问父类默认权限的方法

       }

}

 对于默认访问,只有当2个类在同一个包中的时候,才可以互访对方的默认访问权限的成员。因此,由于类Q并不是包 demo 的一部分,它不可以访问P的辅助方法print()。

现在考虑包 demo 中的类R。R的方法可以调用P中 public 的默认构造方法和访问方法 getData(),protected 的修改方法 setData(),以及默认访问权限的辅助方法 print()。然而,类R不能直接访问P的 private 成员变量data。

package demo;

public class R{

       private P p;

       public R(){

                p = new P(); <--------------------------R 可以访问P的默认构造方法

      }

       public void set(int v){

              p.setData(v); <---------------------------R可以访问P的protected的方法

       }

       public int get(){

              return p.getData(); <---------------------R可以访问P的public的方法

       }

      public void use(){

             p.print();   <-------------------------------R可以访问P的默认权限的方法

      }

      public void invalid1(){

              p.data = 12;   <------------------------- R不能直接访问P的private的数据域

      }

}

下面考虑类S,它既不是demo包的一部分,也没有直接或者间接地扩展自类P。所以,类S仅仅可以调用P中的 public 访问权限的默认构造方法和访问方法getData()。

import demo.P;

public class S{

       private P p;

       public S(){

              p = new P(); <-------------------------------S可以访问P的public的默认构造方法

        }

        public int get(){

               return p.getData(); <------------------------S可以访问P的public的方法

        }

        public void invalid1(int v){

                 p.setData(v); <------------------------------S不能访问P的protected的方法

         }

         public void invalid2(){

                  p.data = 12; <-------------------------------S不能直接访问P的private的数据域

         }

         public void invalid3(){

                  p.print();     <------------------------------- S不能直接访问P的默认权限的方法

         }

}

 上面三个类是分别对应作用域子类、包内和外部三种情况的。

分享到:
评论

相关推荐

    java成员变量和方法的public等访问限定符的访问权限.doc

    Java 成员变量和方法的 public 等访问限定符的访问权限 在 Java 编程中,访问限定符是控制类、成员变量和方法的访问权限的关键。了解访问限定符的作用域是 Java 基础知识之一,对于编程人员来说是必备的知识。本文...

    java访问权限修饰符public.doc

    在 Java 语言中,访问权限修饰符是指用来限定类、成员变量和方法的可访问范围的关键字。访问权限修饰符分为四种:public、protected、friendly 和 private。每种修饰符都有其特定的访问权限和使用场景。 一、public...

    针对Java中的修饰符总结

    访问修饰限定符用于控制类、方法、变量的访问权限。Java中的访问修饰限定符有四种:public、private、protected和默认(也就是不写任何修饰符)。 1. public:公共的,任意处都能进行访问 2. private:私有的,只能...

    java修饰符的使用.pdf

    访问控制符是 Java 语言中控制类及类的成员变量和方法的访问权限的修饰符。访问控制符分为四种级别: 1. 公有访问控制符(public):public 修饰符是最宽松的访问控制符,允许其他包中的类访问和引用该类。public ...

    JAVA封装的特点、访问控制符.docx

    - **getter和setter方法**:为`private`成员变量提供`public`的getter和setter方法,使得外部代码可以通过这些方法来读取和设置变量值,同时可以在此过程中添加额外的逻辑,如验证输入或更新相关数据。 - **public...

    JAVA问答题.docx

    Java提供了访问控制修饰符来实现访问权限控制,访问控制修饰符分为两类:访问修饰符和非访问修饰符。访问控制修饰符对应的权限控制的大小情况为:public &gt; protected &gt; default &gt; private。Java中的访问控制符可以...

    java入门教程:数据类型_实例变量.pdf

    总结来说,Java中的实例变量是对象状态的关键组成部分,它们在对象生命周期中创建和销毁,可以通过访问修饰符控制访问权限,并且拥有默认值。理解和熟练使用实例变量对于Java程序员来说至关重要,因为它们构成了类的...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    对象的使用包括引用对象的成员变量和方法,通过运算符·可以实现对变量的访问和方法的调 用,变量和方法可以通过设定一定的访问权限(见下面的例子)来允许或禁止其它对象对它的 访问。 我们先定义一个类 Point。 例子...

    Java语言程序设计(郑莉)课后习题答案

    * public(公有的):用 public 修饰的成分表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限)。 * Private(保护的):类中限定为 private 的成员只能被这个类本身访问,在类外...

    java基础知识测试题

    **解析:** 在 Java 中,如果一个成员(如字段、方法等)被声明为 public,则它可以被任何其他类访问,不论这些类是否在同一包中。 ### 8. 输入流选择题 **题目:** 下列哪个类代表字符输入流? - A. Reader - B....

    JavaSE基础:package,import,访问控制权限修饰符-28

    JavaSE基础是学习Java编程语言的关键,其中包括了对核心概念的理解和掌握,如包(package)、导入(import)、访问控制权限修饰符等。这些概念在编写高质量、可维护的Java代码中起着至关重要的作用。 1、**多态基础语法...

    java基础知识复习资料

    这些修饰符可以应用于类、成员变量和方法,但类只能用public和default修饰。 Java 5引入了一些重要特性,其中包括增强的for循环(也称为foreach循环),简化了迭代集合和数组的操作。此外,还有枚举类型、泛型、...

    Java中的访问控制权限

    访问控制权限决定了类、接口、变量和方法对不同程序组件的可访问性,这有助于避免不必要的数据干扰,保证软件的稳定性和模块化。 首先,我们来看一下包(Package)的概念。包在Java中扮演着组织类和接口的角色,...

    Java+课后习题+第二章节

    public(公有的):用 public 修饰的成员表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限)。Private(保护的):类中限定为 private 的成员只能被这个类本身访问,在类外不可见。...

    JAVA语言程序设计期末考试试题及答案

    * JAVA语言中,修饰符用于限定访问权限和其他特性。 * 修饰符包括public、private、protected、static、final、abstract等,例如`public class MyClass { ... }`。 switch语句 * JAVA语言中,switch语句用于根据...

    JAVA异常与接口问题

    在Java中,通过访问修饰符(public, protected, default, private)来控制类、方法和变量的可见性,实现隐藏具体实现。此外,接口也可以用来隐藏实现,因为接口只声明方法,不包含实现,使用者只能通过接口调用方法...

    JavaPD-Ch04mao 类与对象 线下班1

    Java提供了四种访问权限修饰符:`public`, `protected`, `private` 和默认(无修饰符)。它们控制类、成员变量和方法的可见性。 4.13 对象的组合 组合(Composition)是将一个类作为另一个类的成员变量,实现类之间...

    清华大学《JAVA语言与面向对象程序设计》试卷及其答案.pdf

    14. Java内存管理:文档提到了不同修饰符对于成员变量访问权限的限定,也间接涉及到Java的内存管理。 15. Java Applet与Application的区别:文档虽然没有详细说明,但涉及到了两种程序类型的生命周期方法,这暗示着...

    Java的第二章作业答案

    ”答案表明`private`限定符使得成员变量或方法只能在定义它的类内部被访问。 3. **b** - 这个问题同样缺乏上下文,但从答案来看,可能与某种特定的概念或规则有关。假设问题是关于某个特定的Java特性或行为。 4. ...

Global site tag (gtag.js) - Google Analytics