`

java访问权限修饰符public protected friendly private用法总结

阅读更多


首先声明:java中,friendly这个修饰符并没有显式的声明,在成员变量和方法前什么修饰符也不用,默认的就是friendly。
    为了条理清晰,分三种不同情况来总结。 

   一 访问权限修饰符修饰成员变量和方法
   public :表明该成员变量和方法是共有的,能在任何情况下被访问。
   
   protected :必须在同一包中才能被访问。(说的比较简单,看个例子就明白了)    
       eg:class A
          { 
            protected int weight ;
            protected int f( int a,int b   )   
            {
              // 方法体
            }
           }      
       假设B与A在同一个包中,则
           class B
          {
            void g()
            {
              A a=new A();
              A.weight=100;//合法
              A.f(3,4);    //合法
             }
           }
   特别说明:什么是在同一个包中? 
   答:用package打包在一起的class ,叫在同一个包中。(不明白,举个例子)
       eg:在JDK的src\java\io中,你会看到许多java类,第一句源代码都是package java.io;
       没有使用package打包的,在同一目录下的类也会被视做同一个包。
   
   friendly :在这种情况下中,同protected。区别在第二和第三种情况中。 
       eg: class A
          { 
            int weight ;
            int f( int a,int b   )   
            {
              // 方法体
            }
           }      
       假设B与A在同一个包中,则
           class B
          {
            void g()
            {
              A a=new A();
              A.weight=100;//合法
              A.f(3,4);    //合法
             }
           }
    private: 只能在本类中访问。
             eg:    class   Test
                    {  
                       private int money;
                       Test()
                       {
                          money=2000;
                       }
                       private int getMoney()
                       {
                         return money;
                        }
                     public  static  void main(String args[])
                     {
                         Test te=new  Test();
                         te.money=3000;             //合法
                         int m=te.getMoney();       //合法
                         System.out.println("money="+m);
                      }
                     }
                   
   PS: 实际上,把重要的数据修饰为private,然后写一个public的函数访问它,正好体现了OOP的封装特性,是OOP安全性的体现。
    

二  访问权限修饰符修饰类
   1,不能用protected和private修饰类。
   2,用friendly修饰的类叫友好类,在另外一个类中使用友好类创建对象时,要保证它们在同一包中。

三   访问权限修饰符与继承
   这里的访问修饰符指的是修饰成员变量和方法。可以分为两种情况:
   1,子类与父类在同一包中
    此时只有声明为private的变量与方法不能被继承(访问)。
   eg:
     class Father
     {
       private int money ;
       int weight=100;
       
      }
     class Son extends Father
     {
       viod f()
       {
         money=10000;//   非法
         weight=100; //   合法
        }
      }
    2,子类与父类不在同一包中
    此时private与friendly均不能被继承(访问), protected与public可以。
     eg:
       Father.java

      package com.aaa
      public class Father
     {
       int height ;
       protected  int money=120;
       public int weight;
       protected int getMoney()
       {
         return money;
       }
       void setMoney(int newMoney)
       {
         money=newMoney;
       }
      }
     
      Son.java
      package com.bbb
      import com.aaa.Father;
      public class Son extends Father
      {
         void f()
         {
           money=10000;//合法
           //height=170;//非法,height为friendly修饰的变量
           System.out.println(money);//输出结果是10000
           //setMoney(300);          //非法
           int number=getMoney();    //合法
           System.out.println(number);//输出结果是10000
          }
           public  static  void main(String args[])
          {
            Son sss=new Son();
            sss.f();
           }
       }
  所以,访问权限修饰符权限从高到低排列是public  ,protected  ,friendly, private。 


分享到:
评论
1 楼 pml346680914 2010-12-21  
1,不能用protected和private修饰类。 这句有点错误,内部类是可以用这些修饰符的。
总体写的很好了,很清晰,看得出你做了很多测试。

相关推荐

    java访问权限修饰符public.doc

    访问权限修饰符分为四种:public、protected、friendly 和 private。每种修饰符都有其特定的访问权限和使用场景。 一、public 访问权限修饰符 public 访问权限修饰符表明该成员变量和方法是共有的,能在任何情况下...

    JAVA访问修饰符大归纳

    根据 JAVA 访问修饰符的特性和使用范围,我们可以将其分为三类:修饰符类的访问修饰符、属性的访问修饰符和方法的修饰符。 一、修饰符类的访问修饰符 修饰符类的访问修飾符共有四种:默认、public、abstract 和...

    举例详解Java中的访问权限修饰符

    Java提供了五种访问权限级别,分别是public、friendly(或称为default)、private和protected。下面将详细解释这些访问权限的含义和使用场景。 1. **public**: - 成员(方法、变量):任何类在任何地方都能访问。...

    Java访问修饰符大归类

    Java 中的访问修饰符可以分为三大类:类的访问修饰符、属性的访问修饰符和方法的访问修饰符。每种修饰符都有其特定的访问权限和用途。 类的访问修饰符 Java 中有四种类的访问修饰符: 1. 缺省(friendly):同一...

    java修饰符

    本文将深入探讨Java的访问控制修饰符,包括`private`、`default`(也称为`friendly`)、`protected`和`public`,以及它们如何影响程序的结构和安全性。 #### 访问控制修饰符:封装的基石 访问控制修饰符是Java语言...

    java常用修饰符.doc

    本文主要分析了Java中常见的访问修饰符(public、private、protected、friendly/default)以及非访问修饰符(final、abstract、static、native)。我们将通过具体的例子和解析深入理解这些修饰符的作用。 首先,...

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

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

    java修饰符使用很给力

    Java修饰符在编程中起着至关重要的作用,它们用于控制类、接口、变量和方法的访问权限以及实现其他特性。本文将深入探讨Java中的访问修饰符及其应用。 首先,我们来了解一下类的访问修饰符: 1. **public**:公共...

    说出作用域public, private, protected,以及不写得区别

    说明:如果在修饰的元素上面没有写任何访问修饰符,则表示friendly。 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × ×

    Java中的private、protected、public和default的区别(详解)

    在Java编程语言中,访问控制修饰符是用来定义类、接口、方法和变量的可见性和访问权限的。主要有四种访问控制修饰符:`private`、`protected`、`public`和`default`,它们决定了代码的封装性和可访问性。下面我们将...

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

    * 类成员的访问控制符有 public,private,protected 及无修饰符。 * public(公有的):用 public 修饰的成分表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限)。 * Private...

    类的使用,学习,小结 java定义一个学生类

    总结起来,Java中的类定义、成员变量、方法、构造器、重载、访问控制以及包的使用都是面向对象编程的关键组成部分。理解并熟练掌握这些概念,对于编写健壮、安全的Java代码至关重要。在实际编程中,我们会根据需求...

    java四种作用域的说明.doc

    通过合理运用`public`、`private`、`protected`以及默认访问控制符,开发者能够构建出既灵活又安全的软件系统。这些访问控制符不仅帮助实现了封装原则,也提高了系统的可维护性和扩展性。 #### 六、参考资料 - ...

    java面试题

    Java 中有四种访问修饰符:public、private、protected 和 friendly(默认)。每种访问修饰符都有其特定的访问权限范围。了解访问修饰符的作用域是 Java 开发中的基本知识。 2. ArrayList 和 Vector 的区别 ...

    Java+课后习题+第二章节

    类成员的访问控制符有 public,private,protected 及无修饰符。public(公有的):用 public 修饰的成员表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限)。Private(保护的):类中...

    程序设计(JAVA)练习题.pdf

    5. 访问权限修饰符:从控制范围最大到最小排序依次是public、protected、friendly(包内访问,Java中通常用包访问权限代替)和private。因此,正确顺序是B:public>protected>friendly>private。 6. 异常处理:try-...

    Java类与对象

    - 缺省(无修饰符): 也称为package-private或者friendly,表示只能在同一包内的其他类访问。 - `class`: 关键字,用于声明类。 - `classname`: 类名,用于标识该类。 - `extends superclassname`: 表示继承父类,...

    Java OOP学习笔记

    Java提供了四种访问修饰符:public、private、protected和默认(friendly)。public成员对所有类都是可见的,private成员只能在定义它的类中访问,protected成员可以在本类和其子类中访问,而默认修饰符(包访问权限...

    毕业找工作最全Java面试题

    Java访问修饰符:public, private, protected与默认(包访问) 在Java中,访问控制是通过`public`, `private`, `protected`以及默认访问权限(也称为包访问权限)来实现的。这些关键字决定了类、方法或变量在不同...

Global site tag (gtag.js) - Google Analytics