`
huiqinbo
  • 浏览: 345088 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java访问权限修饰符friendly----同一个包内其它类可以访问(钦波总结大全)

阅读更多
1、访问权限符:
(1)public:


对于成员来说:任何其他类都可以访问它们,不管在同一个包中还是在另外的包中。
对于类来说:    也是一样。


(2)friendly:


对于成员老说:如果一个类的成员没有任何权限修饰,那么它门就是缺省包访问权限,用friendly来表示,注

意friendly不是Java中的关键字,这里是个人喜欢的方式用它表示而已。同一个包内其它类可以访问,但包外

就不可以。对于同一个文件夹下的、没有用package的classes,Java会自动将这些classes初见为隶属于该目录

的default package,可以相互调用class中的friendly成员。如以下两个class分别在同一个文件夹的两个文件

中,虽然没有引入package,但隶属于相同的default package。

   class Sundae{
   //以下两个方法缺省为friendly
   Sundae(){}
   Void f() {System.out.println(“Sundae.f()”);
   }
   public class IceCream{
   public static void main(String[] args){
   Sundae x = new Sundae();
   x.f();
   }
   }

对于类来说:同一个包中的类可以用。总之,类只可以声明为public或者friendly。


(3)private:


对于对于成员来说:只能在该成员隶属于的类中访问。
class Sundae{
   private Sundae(){}//只能在Sundae class中被调用
   Sundae(int i) {}
   static Sundae makASundae() {
   return new Sundae();
   }
   }
   public class IceCream{
   public static void main(String[] args){
   // Sundae class中构造函数Sundae()是private,
   // 所以不能用它进行初始化
   //Sundae x = new Sundae();
   Sundae y = new Sundae(1);//Sundae(int)是friendly,可以在此调用
   Sundae z = Sundae.makASundae();
   }
   }

对于类来说:类不可以声明为private。

(4)protected:


对于对于成员来说:相同包中的类可以访问(包访问权限);基类通过protected把基类中的成员的访问权限赋予派生类不是所有类(派生类访问权限)。

例子:package c05.local;
import pack1.Cookie;
//注意:在这里ChocolateChip继承了类Cookie,按道理bite()方法也在
//ChocolateChip中,可以用x.bite直接调用,但是不可以的,因为类ChocolateChip
//和Cookie类不在一个包中,各自具有包访问权限,为了能够使用x.bite()必须要把
//Cookie方法的访问权限换成public或者protected,但是一旦换成public所有的人就
//可以访问了,这样达不到隐私的要求,所以设置成protected最好,既可以顺利访问,也可以
//避免外面的类调用,保护好隐私的作用
public class ChocolateChip extends Cookie {
 
    public ChocolateChip() {
     System.out.println("ChocolateChip constructor");
    }
    public static void main(String[] args) {
      ChocolateChip x = new ChocolateChip();
      x.bite(); // Can't access bite
   
    }
} ///:~




package pack1;

public class Cookie {
public Cookie()
{
System.out.println("Cookie constructor");
}

protected void bite(){System.out.println("bite");}

}


对于类来说:类不可以声明为protected


对于类的权限修饰,下面有更好的解释:

Class类的访问权限:
public:可以供所有的类访问。
默认:默认可以称为friendly但是,java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++。默认的访问权限是包级访问权限。
         即如果写了一个类没有写访问权限修饰符,那么就是默认的访问权限,同一个包下的类都可以访问到,即使可以实例化该类
         (当然如果这个类不具有实例化的能力除外,比如该类没有提供public的构造函数)。

说明:
       1、每个编译单元(类文件)都仅能有一个public class
       2、public class的名称(包含大小写)必须和其类文件同名。
       3、一个类文件(*.java)中可以不存在public class。
        这种形式的存在的场景:如果我们在某个包内撰写一个class,仅仅是为了配合同包内的其他类工作,而且
       我们不想再为了撰写说明文档给客户(不一定是现实意义的客户,可能是调用这个类的类)看而伤脑筋,而且有可能过一段时间之后
       有可能会彻底改变原有的做法,并完全舍弃旧版本,以全新的版本代替。
       4、class不可以是private和protected。
       5、如果不希望那个任何产生某个class的对象,可以将该类得所有构造函数设置成private。但是即使这样也可以生成该类的对象,就是class的static的成员(属性和方法)可以办到
分享到:
评论

相关推荐

    java访问权限修饰符public.doc

    Java 作为一种面向对象的编程语言,提供了四种访问权限修饰符,它们分别是 `public`、`protected`、`default`(通常称为“包访问”或“友好访问”,文中提到的 `friendly` 实际上就是 `default`)和 `private`。...

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

    - 类:Java不支持private类,这意味着类至少是friendly的,可以被同一包内的其他类访问。 4. **protected**: - 成员:在同一包内和所有子类中可访问。这种权限通常用于基类的成员,允许子类进行继承并访问或重写...

    java修饰符使用很给力

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

    java常用修饰符.doc

    4. **友善访问修饰符/friendly/default**:友善访问不写任何修饰符,它只允许同一包内的类访问。如果尝试在不同包内访问友善成员,将会导致编译错误。 5. **私有保护访问修饰符(private protected)**:在某些文献...

    Java类与对象

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

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

    3. `friendly`(默认,没有修饰符):同一包内的类可以访问。 4. `private`:只有在同一类内可以访问。 类的定义可以包含这四个修饰符,例如: ```java public class MyClass { ... } ``` 表示这个类是公开的,可以...

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

    【JAVA笔试题集锦(1-30)基础部分】主要涵盖了Java编程语言的基础概念,包括访问修饰符、匿名内部类、静态嵌套类、逻辑运算符、集合接口与工具类、断言、字符串对象创建、数值处理以及类型转换等方面的知识。...

    Java常见面试题集--面试题全面综合(一)

    - `friendly`(默认):同一包内可以访问,但不是关键字,常指包访问权限。 2. **ArrayList vs Vector,HashMap vs Hashtable**: - `ArrayList`和`Vector`都是动态数组,用于存储有序的元素。`Vector`是线程...

    java面试题大全-基础方面

    - 默认的访问权限在Java中被称为包级私有,它允许在定义类的包内访问,但不允许跨包访问。 2. **匿名内部类** - 匿名内部类没有名称,通常用于简洁地实现接口或继承一个类的简短版本。 - 它不能继承其他类,但...

    Java常见面试题集-

    - **protected**: 受保护修饰符,被声明为protected的成员可以在同一个包内或者不同包中的子类中被访问。 - **默认(friendly)**: 如果没有显式地指定任何访问修饰符,则该成员具有默认访问权限,即只在同一包内的...

    清华IT深入Java类高级PPT学习教案.pptx

    3. 默认(无修饰符或称为友好`friendly`):成员只对本类和同一包内的类可见。 4. `private`:私有访问权限,仅限于本类内部使用。如果一个类的构造器声明为private,其他类无法直接实例化该类。 【类的封装】 ...

    java面试题目汇总_经典版

    - `缺省(default)`: 也称为包访问权限,允许在同一包内的类访问,子类和不同包的类无法直接访问。 访问权限总结如下表: | 作用域 | 当前类 | 同一 package | 子孙类 | 其他 package | | ------------- | -...

    java 重要知识点总结

    - 默认(friendly):只限于同一包内的类访问。 10. **重载方法**: - 重载方法要求参数列表不同(参数个数、类型或顺序),返回类型不影响重载。 以上是Java编程中的一些重要知识点,理解和掌握这些概念对于...

    java基础重点整理

    - **friendly/缺省**:默认访问级别,只允许同一包内的类访问。 - **private**:私有成员只能在定义它的类内部访问。 - **protected**:保护访问权限,允许同一包内的类和不同包的子类访问。 3. **面向对象原则*...

    java基础笔试题目.pdf

    - 缺省(friendly): 默认访问级别,只允许在同一包内的类访问。 访问权限的范围如下: - public: 所有类 - protected: 同包类 + 子类 - friendly: 同包类 - private: 同类 3. **匿名内部类**: - 匿名内部...

    java重点(总结的很详细)

    - 重载(Overloading)是指在同一个类中,方法名相同但参数列表不同的方法。 - 覆盖(Overriding)是子类对父类方法的重新定义,要求方法名、参数列表和返回类型完全一致。 - 重载的方法可以改变返回类型,但覆盖...

Global site tag (gtag.js) - Google Analytics