`

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

阅读更多
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。
分享到:
评论

相关推荐

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

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

    java实验报告 四个访问权限,抽象数据类型栈,计算器

    编写四个类A、B、C、D,其中类A、B在同一个包中,类C、D在另一个包中,且类C为类A的子类,通过这四个类来测试private,protected,public和friendly四个访问权限的区别。实现栈的基本操作。实现计算器。

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

    其它对象对它的访问,访问权限所以有以下几种:private, protected, public, friendly。 1.8.2 对象 把类实例化,我们可以生成多个对象,这些对象通过消息传递来进行交互(消息 传递即激活指定的某个对象的方法以改变...

    java笔试题,java程序员常见的笔试

    1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时...

    java面试宝典.docx

    (3)、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。 作用域 当前类 同一package 子孙类 其他package  public √ √...

    java面试题大全-基础方面

    1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时...

    java基础知识

    1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时...

    java面试宝典

    1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他 package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × ...

    最新最全Java面试题汇总

    1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时...

    JAVA面试题149例

    1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时...

    java笔试题目Java基础方面

    0、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时...

    Java笔试题目汇总

    0、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时...

    java 语言中常见易错知识点

    1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时...

    Java三个实验报告

    1.编写四个类A,B,C,D,其中类A,B在一个包中,类C,D在另一个包中,且类C为类A的子类,通过这四个类来测试private,protected,public,和friendly四个访问权限的区别。 2.用Java实现栈 3.做个简单的计算器

    计算机(专升本)Java程序设计复习资料.doc

    A.private B.protected C.public D.friendly 4.关键字supper的作用是( )。 A.用来访问父类被隐藏的成员变量 B.用来调用父类中被重载的方法 C.用来调用父类的构造函数 D.以上都是 5.下面关于类及其修饰符的一些...

    java各大公司面试题详解(有案例分析哦)

    作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时...

    JAVA笔试题集锦(1-30)基础部分

    1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时...

    java笔试题集

    1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时...

    抽象和封装PPT

    5.封装 encapsulation (private, friendly, protected, public) 5.1 属性私有,通过getXXX()或 setXXX()方法来取值或赋值,在setXXX()方法中添加 代码进行控制 5.2 6.this 表示对象本身(部分内容还要和后面的...

Global site tag (gtag.js) - Google Analytics