`
liqita
  • 浏览: 292512 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java访问权限修饰符用法总结 ( public, protected, friendly, private等修饰符

阅读更多

 

权限修饰符概述


 

 

java访问权限修饰符(特殊情况除外)
作用域 当前类 同一package 子孙类 其他package
public
protected ×
friendly × ×
private × × ×

不写时默认为friendly

 

 

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

1.         访问权限修饰符修饰成员变量和方法

1)         public:表明该成员变量和方法是共有的,能在任何情况下被访问。

2)         protected:必须在同一包中才能被访问。

3)         friendly:在一个包中或者子类中才能被访问。

4)         private: 只能在本类中访问。

        实际上,把重要的数据修饰为private,然后写一个public的函数访问它,正好体现了OOP的封装特性,是OOP安全性的体现。   

 

2.         访问权限修饰符修饰类 

1)         不能用protectedprivate修饰类。

2)         friendly修饰的类叫友好类,在另外一个类中使用友好类创建对象时,要保证它们在同一包中。

  

3.         访问权限修饰符与继承

   这里的访问修饰符指的是修饰成员变量和方法。可以分为两种情况:

1)         子类与父类在同一包中

    此时只有声明为private的变量与方法不能被继承(访问)

2)         子类与父类不在同一包中

此时privatefriendly均不能被继承(访问) protectedpublic可以。所以,访问权限修饰符权限从高到低排列是public, protected, friendly, private

 

 

 

结合代码分析权限修饰符:

 

 

首先声明:java中,friendly这个修饰符并没有显式的声明,在成员变量和方法前什么修饰符也不用,默认的就是friendly。

  为了条理清晰,分三种不同情况来总结。

  一 访问权限修饰符修饰成员变量和方法

  public:表明该成员变量和方法是共有的,能在任何情况下被访问。

  protected:必须在同一包中才能被访问。(说的比较简单,看个例子就明白了)

Java代码

  class A

  {

   protected int weight ;

  protected int f( int a,int b   )

   {

   // 方法体

  }

  }

  假设B与A在同一个包中,则

Java代码

  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。区别在第二和第三种情况中。

Java代码

  class A

  {

   int weight ;

   int f( int a,int b   )

   {

   // 方法体

   }

  }

 

 

 

  假设B与A在同一个包中,则

Java代码

  class B

  {

   void g()

   {

   A a=new A();

   A.weight=100;//合法

   A.f(3,4);    //合法

   }

  }

  private: 只能在本类中访问。

Java代码

  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的变量与方法不能被继承(访问)。

Java代码

  class Father

  {

   private int money ;

   int weight=100;

  }

  class Son extends Father

  {

   viod f()

   {

   money=10000;//   非法

   weight=100; //   合法

   }

  }

 

 

 

 

  2,子类与父类不在同一包中

  此时private与friendly均不能被继承(访问), protected与public可以。

  Father.java

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

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 楼 yuanyanger 2014-11-03  
第一幅表格中friendly的子孙类是个“叉”,然后你在下面解释是:“3) friendly:在一个包中或者子类中才能被访问。”,这不矛盾吗,friendly类到底能不能被子孙类访问啊。你是把(2)和(3)的解释写反了吧

相关推荐

    java访问权限修饰符public.doc

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

    JAVA访问修饰符大归纳

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

    Java访问修饰符大归类

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

    java修饰符

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

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

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

    java常用修饰符.doc

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

    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定义一个学生类

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

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

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

    Java类与对象

    - **access modifier**: 访问修饰符,如public, private等。 - **return type**: 方法返回值的类型,如果是无返回值,则用`void`表示。 - **methodName**: 方法名称。 - **parameters**: 方法的参数列表。 #### ...

    Java笔试题大全

    - `private`: 私有访问修饰符,只能在定义该成员的同一类内部访问。 - `protected`: 受保护的访问修饰符,可以在同一包内的任何类,以及不同包中的子类中访问。 - 缺省(friendly):默认的访问级别,仅在定义类...

    java面试题

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

    Java+课后习题+第二章节

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

    java学习课件ppt2

    1. 修饰符:如public、private、protected等,用于控制类的访问权限。 2. 类名:遵循驼峰命名法,表示类的标识。 3. 成员变量:类中定义的变量,可以是数据类型的实例,也可以是静态(static)变量。 4. 成员方法:...

    java 学习笔记

    共有四种访问修饰符:`public`、`protected`、`default`(未指定访问修饰符时,默认访问级别)和`private`。 - **public**: 具有最大的访问权限,可以在任何地方被访问。它常常被用作类的公共接口,使得其他类能够...

    java面试宝典pdf

    访问修饰符的作用域包括 public、private、protected 和 friendly 四种。public 表示可以被所有类访问,private 表示只能被当前类访问,protected 表示可以被当前类和子类访问,friendly 表示可以被当前类和同一个包...

    java四种作用域的说明.doc

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

Global site tag (gtag.js) - Google Analytics