《Thinking in Java》Six 访问权限控制

本文深入解析Java中类的访问权限与封装机制,包括public、protected、private和默认访问权限的区别,以及如何通过静态导入和包结构来管理类的可见性。同时,展示如何利用静态工厂方法创建类实例,以及在类中使用私有构造器实现单例模式。通过实例代码解释了Java类的静态成员与实例成员之间的区别,并提供了如何在类管理中高效地初始化对象的策略。

不在同一个包中的.java

papackage Fifth;
public class SixQuanXian {
 protected void Access1(){
  System.out.println("protected");
 }
 
 public void Access2(){
  System.out.println("public");
 }
 
 private void Access3(){
  System.out.println("private");
 }
 
 void Access4(){
  System.out.println("default");
 }
}
package sixth;

import Fifth.SixQuanXian;

public class QuanXian {
 public static void main(String[] args){
  SixQuanXian s = new SixQuanXian();

  s.Access2();//不在一个包中只有public可以被访问
 
  //s.Access1();//protected
 
 //s.Access3();//private

  //s.Access4();//default
 }
}

类的访问权限

 package sixth;

 class Connection {
  private static int count = 0; 
  
 private Connection(){
  count++;
  }
 
 //不希望类被访问可以将类的所有构造器都指定为private,从而阻止任何人创建该类的对象
 //但可以在类的static成员内部创建该类的对象。
 
 public static Connection makeConnection(){
  return new Connection();
 }
 
  public int getCount() {
         return count--;
     }
 
}
 public class ConnectionManager{
  
  int countOfConnection = 4;
  //Connection 类型的数组
   
  Connection[] ca = new Connection[countOfConnection];
     // 非静态实例初始化
     {
         for (int i = 0; i < countOfConnection; ++i) {
             ca[i] = Connection.makeConnection();
         }
     }
     public Connection getConnection(int i) {
         if (i < countOfConnection) {
             return ca[i];
         } else {
             return null;
         }
     } 
     
  public static void main(String[] args){
   ConnectionManager c = new ConnectionManager();
 
   //Connection c1 = new Connection();//the constructor Connection is not visible,不可以如此创建
    
         for (int i = 0; i < c.countOfConnection + 1; ++i) {
             Connection connection = c.getConnection(i);
             if (connection != null) {
                 System.out.println("num = " + connection.getCount());
             } else {
                 System.out.println("null");
             }
         }
  }
 }

转载于:https://my.oschina.net/doudoulee/blog/651978

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值