码迷,mamicode.com
首页 > 编程语言 > 详细

[学习笔记]Java的访问指示符public,protected,private,缺省的作用域

时间:2017-08-16 15:39:10      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:new   stat   笔记   ps1   多个   logs   出错   实例   成员   

0.引言

Java的访问指示符public,protected,private,缺省可以用来修饰类和方法。

1.作用域如下

public: 其它类都能访问此类或方法

protected: 为继承而生的,子类可以访问父类该修饰的方法

private: 为类自己所用,一般修饰成员变量

缺省: 同一个包内可用(“友好”类)

2.同一个java文件里面若有多个类

(1) 每个编译单元(文件)都只能有一个public 类。每个编译单元有一个公共接口的概念是由那个公共类表
达出来的。根据自己的需要,它可拥有任意多个提供支撑的“友好”类。但若在一个编译单元里使用了多个
public类,编译器就会向我们提示一条出错消息。(即只能有一个是public修饰,其它为缺省)

(2) 可能(但并常见)有一个编译单元根本没有任何公共类。此时,可按自己的意愿任意指定文件名。(即可以都是缺省修饰,即无访问指示符修饰类名)

3.若不愿其他任何人访问那个类

我们现在对于类的访问只有两个选择:“友好的”或者public。若不愿其他任何人访问那个类,可将所有构建器设为private,然后用(singleton)单例模式或者静态方法获得此类的实例

//: Lunch.java 
// Demonstrates class access specifiers. 
// Make a class effectively private 
// with private constructors: 
 
class Soup { 
  private Soup() {} 
  // (1) Allow creation via static method: 
  public static Soup makeSoup() { 
    return new Soup(); 
  } 
  // (2) Create a static object and 
  // return a reference upon request. 
  // (The "Singleton" pattern): 
  private static Soup ps1 = new Soup(); 
  public static Soup access() { 
    return ps1; 
  } 
  public void f() {} 
} 
 
class Sandwich { // Uses Lunch 
  void f() { new Lunch(); }
} 
 
// Only one public class allowed per file: 
public class Lunch { 
  void test() { 
    // Can‘t do this! Private constructor: 
    //! Soup priv1 = new Soup(); 
    Soup priv2 = Soup.makeSoup(); 
    Sandwich f1 = new Sandwich(); 
    Soup.access().f(); 
  } 
} ///:~  

4.例外

同一个Java文件中,我们现在对于类的访问只有两个选择:“友好的”或者public,但是如果是内部类,就可以使用protected和private来修饰。

  

 

[学习笔记]Java的访问指示符public,protected,private,缺省的作用域

标签:new   stat   笔记   ps1   多个   logs   出错   实例   成员   

原文地址:http://www.cnblogs.com/fanbi/p/7373186.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!