`

控制可见性的访问修饰符

阅读更多
private--仅对本类可见
public-- 对所有类可见
protected-- 对本包和所有子类可见
默认friendly--对本包可见,但这是一种不受鼓励的形式。

访问权限修饰符权限从高到低排列是public  ,protected  ,friendly, private。
java中,friendly这个修饰符并没有显式的声明,在成员变量和方法前什么修饰符也不用,默认的就是friendly。
分三种不同情况来总结。

一 访问权限修饰符修饰成员变量和方法
   public:表明该成员变量和方法是共有的,能在任何情况下被访问。
  
   protected:必须在同一包中才能被访问。(说的比较简单,看个例子就明白了)  
       eg:

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);    //合法
             }
           } 
 
 
   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: 只能在本类中访问。
             eg:   

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);   
                      }   
                     }  
                 

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

三   访问权限修饰符与继承
   这里的访问修饰符指的是修饰成员变量和方法。可以分为两种情况:
   1,子类与父类在同一包中
    此时只有声明为private的变量与方法不能被继承(访问)。
   eg:
    

Java代码
class Father   
     {   
       private int money ;   
       int weight=100;   
         
      } 

Java代码
class Son extends Father   
     {   
       viod f()   
       {   
         money=10000;//   非法   
         weight=100; //   合法   
        }   

   2,子类与父类不在同一包中
    此时private与friendly均不能被继承(访问), protected与public可以,protected的一个说法就是希望不是同一个包的类想调用它就必须通过继承来调用,否则不能。
     eg:
       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。


分享到:
评论

相关推荐

    Java访问修饰符

    "Java 访问修饰符详解" Java 访问修饰符是 Java 编程语言中的一种重要机制,它控制着类、方法和变量的访问权限。访问修饰符可以分为四种:public、protected...正确地使用访问修饰符可以提高代码的安全性和可维护性。

    C#访问修饰符的简介

    在C#编程语言中,访问修饰符是用来控制类、接口、结构、枚举以及它们的成员(如字段、方法、属性等)的可访问性的关键元素。这些修饰符定义了哪些代码可以访问特定的类型或成员,从而确保了代码的封装性和安全性。...

    C#访问修饰符.zip

    在C#编程语言中,访问修饰符是控制类、接口、结构、方法、属性、字段等成员的可访问性的关键工具。这些修饰符定义了代码的封装性,是面向对象编程的重要组成部分。以下是对C#中主要访问修饰符的详细说明: 1. **...

    关于Java中各种修饰符与访问修饰符的说明

    Java是一种面向对象的编程语言,其中修饰符和访问修饰符是控制代码访问权限和行为的重要元素。本篇文章将详细介绍Java中的各种修饰符和访问修饰符。 1. **类的访问修饰符** - `public`:任何类都可以访问声明为`...

    类的封装(访问修饰符)

    访问修饰符是用来控制类的成员(如变量、方法)的可见性和访问权限的关键词。常见的访问修饰符有:public、private、protected以及默认(无修饰符)。 1. **public**:公共访问修饰符,标记为public的成员可以在...

    java的访问修饰符的范围说明

    Java语言中为了控制方法和成员变量的可见性和访问级别,定义了几种访问修饰符:private, protected, public, 和默认(未修饰)访问权限。这些修饰符决定了不同类之间的访问能力,以保证类的封装性和安全性。接下来,...

    java常用的修饰符

    - **volatile**: 易失修饰符,用于多线程环境,保证变量在多个线程之间的可见性,但不保证原子性。 - **transient**: 暂时性修饰符,表明变量不参与序列化,不会被持久化到磁盘。 3. **方法的控制修饰符** - **...

    Java中的访问修饰符详细解析

    Java中的访问修饰符是编程中控制类、接口、方法和字段访问权限的关键元素。它们用于确定哪些代码可以访问特定的程序元素。以下是Java访问修饰符的详细解析: 1. **类的访问修饰符** - **public**:公共类修饰符,...

    C#访问修饰符Test.zip

    在C#编程语言中,访问修饰符是控制类、接口、结构、方法、属性、字段等成员的可访问性的重要...通过深入理解并灵活应用C#的访问修饰符,开发者可以更好地控制类及其成员的可见性,从而创建出高效且易于维护的软件系统。

    java修饰符

    - **描述**:当没有明确指定访问修饰符时,默认访问级别(即没有`public`、`protected`或`private`前缀)被称为`default`。这种情况下,成员仅对同一包内的类可见。 - **用途**:`default`通常用于包内协作,促进同...

    JAVA 访问修饰符 及 protected 几点被人忽略的致命要害

    ### JAVA 访问修饰符及 protected 的几点被人忽略的致命要害 #### 一、概述 在 Java 中,访问控制修饰符用于控制类、方法、变量等成员的可见性。Java 提供了四种不同的访问级别:`private`、`protected`、`默认`...

    java修饰符介绍

    - **public**:公共访问修饰符,允许任何地方的代码访问该类或成员。这意味着类或方法可以在任何包中被调用。 - **默认(无修饰符)**:当没有明确指定访问修饰符时,类或成员具有包级私有访问权限,只允许在同一...

    Java修饰符.pdf

    它们主要分为三类:访问修饰符、类修饰符和方法/变量修饰符。这些修饰符在编写类、接口、方法和变量时起到至关重要的作用,确保代码的封装性、安全性和可维护性。 1. 访问修饰符: - `private`:私有访问修饰符,...

    C#修饰符总结

    - `public`:公共访问修饰符,允许任何代码访问。 - `private`:私有访问修饰符,仅限于在同一个类内部访问。 - `protected`:受保护访问修饰符,允许同一类及继承类访问。 - `internal`:程序集内访问,只允许...

    c#的默认访问修饰符小结[文].pdf

    C#是一种面向对象的编程语言,它通过访问修饰符来...在这个例子中,我们可以看到访问修饰符如何影响类及其成员的可见性和可访问性。理解这些规则对于编写安全、封装良好的代码至关重要,也是软件开发中重要的基础概念。

    理解java中的类的各种权限修饰符

    正确地使用它们可以帮助开发者更好地管理代码的可见性和访问控制,从而构建出更安全、更易于维护的应用程序。需要注意的是,在实际开发过程中,应根据具体的需求选择合适的权限修饰符,以达到最佳的代码组织效果。

    Java修饰符demo

    本文将深入探讨Java修饰符的基础知识,包括访问修饰符、非访问修饰符以及它们在实际编程中的应用。 首先,我们来看访问修饰符。在Java中,有四种主要的访问修饰符: 1. **public**:公共访问修饰符,允许任何地方...

    Java类的修饰符、访问控制符

    Java语言中的类修饰符和访问控制符是编程中至关重要的概念,它们决定了代码的组织结构、访问权限和封装性。本实验旨在深入理解和熟练运用这些关键特性。 首先,Java类修饰符包括`public`, `private`, `protected`...

Global site tag (gtag.js) - Google Analytics