`

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

    博客分类:
  • java
阅读更多


  首先声明: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