Java编程思想学习笔记——类的访问权限
类的访问权限
Java中,访问权限修饰词用于确定库中哪些类对于该库的使用者是可用的。
public class Foo{
}
注意点:
- 每个文件(编译单元)只能有一个public类。
- public类的名称必须完全和含有该编译单元的文件名相匹配,包括大小写。
- 编译单元内没有public类也是可行的(不常这么用),在这种情况下,可以随意对文件命名。
类既不可以是private的(除该类以外,任何类都不能访问它),也不可以是protected。(事实上,内部类可以是private或protected的)
类的访问权限:包访问权限或public。
若不希望别人对该类有访问权限,可以将所有的构造器都指定为private,从而阻止其他人创建该类的对象。
例外:
在该类static成员内部可以创建。
class Soup1{
//构造器是private,任何其他人无法创建该类对象
private Soup1(){
}
//static方法,创建对象并返回引用。
//1.可以在返回引用前,做一些额外的工作
//2. 可以记录创建了几个类的对象
public static Soup1 makeSoup(){
return new Soup1();
}
}
class Soup2{
private Soup2(){
}
//单例模式,始终只能创建一个对象
public static Soup2 soup2 = new Soup2();
public static Soup2 access(){
return soup2;
}
public void f(){
}
}
public class Lunch {
void testPrivate(){
// Soup1 soup1 = new Soup1();
}
void testStatic(){
Soup1 soup1 = Soup1.makeSoup();
}
void testSingleton(){
Soup2.access().f();
}
}
对于包访问权限修饰的类,包内其他类可以创建它的对象,包外则不行。但如果该类的某个static成员的访问权限是public的话,依旧可以调用
该static成员,尽管它们并不能生成该类对象。
Java编程思想学习笔记——类的访问权限的更多相关文章
- [Java编程思想-学习笔记]第3章 操作符
3.1 更简单的打印语句 学习编程语言的通许遇到的第一个程序无非打印"Hello, world"了,然而在Java中要写成 System.out.println("He ...
- Java编程思想学习笔记_2(继承和多态)
静态初始化: 静态初始化只在必要的时刻进行.(即当程序需要加载类进入内存的时候,执行静态初始化.静态变量和静态代码块的初始化顺序,按照在代码中声明的顺序老执行.例如:如果要执行某个public类,那么 ...
- Java编程思想 学习笔记6
六.访问权限控制 访问控制(或隐藏具体实现)与“最初的实现并不恰当”有关. 如何把变动的事物与保持不变的事物区分开来,这是面向对象设计中的一个基本问题. 为了解决这一问题,Java提供了访问权限修饰词 ...
- Java编程思想学习笔记——访问权限修饰词
几种访问权限修饰词 public,protected,private,friendly(Java中并无该修饰词,即包访问权限,不提供任何访问修饰词) 使用时,放置在类中成员(域或方法)的定义之前的,仅 ...
- Java编程思想 学习笔记1
一.对象导论 1.抽象过程 Alan Kay曾经总结了第一个成功的面向对象语言.同时也是Java所基于的语言之一的Smalltalk的五个基本特性,这些特性表现了纯粹的面向对象程序设计方式 1)万物皆 ...
- Java编程思想 学习笔记11
十一.持有对象 通常,程序总是根据运行时才知道的某些条件去创建新对象.在此之前,不会知道所需对象的数量,甚至不知道确切的类型. Java实用库还提供了一套相当完整的容器类来解决这个问题,其中基本的类 ...
- Java编程思想 学习笔记7
七.复用类 1.组合语法 在新的类中产生现有类的对象.由于新的类是由现有类的对象所组成,所以这种方法叫做组合. 类中域为基本类型时能够自动被初始化为零.对象引用被初始化为null. 编译器不是简单地为 ...
- [Java编程思想-学习笔记]第2章 一切都是对象
2.1 创建新的数据类型:类 通过第一章掌握了面向对象的理论后,我们知道每个对象必定属于一个类型,那么Java如何创建新的数据类型?如下程序所示: class Circle { // 属性 // 方 ...
- Java编程思想 学习笔记8
八.多态 在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征. 多态通过分离做什么和怎么做,从另一角度将接口和实现分离开来. “封装”通过合并特征和行为来创建新的数据类型.“实现 ...
随机推荐
- java基础篇---线程问题
1:继承 Thread 类,为什么要继承 run 方法 答案: Thread 实现了 Runnable 接口, 而 run 方法是 Runnable 的方法, 接口中的方法 默认 public abs ...
- Maven 本地打war包
Maven是个很好用的管理工具,不经能够管理jar,还能实现打包. 这里讲解Maven 本地打包,服务器打包,可以全部交给jenkins去完成的. 用Maven打包,先在eclipse装Maven插件 ...
- Java Web项目中使用Freemarker生成Word文档
Web项目中生成Word文档的操作屡见不鲜.基于Java的解决方式也是非常多的,包含使用Jacob.Apache POI.Java2Word.iText等各种方式,事实上在从Office 2003開始 ...
- Android学习笔记(38):Handler消息传递处理机制
先说为什么须要Handler: Android的主线程又叫UI线程,用于处理与UI相关的时间.Android仅仅同意在主线程中改动UI组件,当我们在其它线程中须要改动UI界面时.就须要发送消息到主线程 ...
- DataTable的一些特殊用法:Select
当你从数据库里取出一些数据,然后要对数据进行整合,你很容易就会想到: 1DataTable dt = new DataTable();//假设dt是由"SELECT C1,C2,C3 FRO ...
- [net]netcat 做网络端口监听
nc命令说明:https://www.cnblogs.com/nmap/p/6148306.html 如下: nc -vz -w domain/ip &> /dev/null & ...
- 腾讯云CentOS7.0使用yum安装mysql
背景: 今天才申请了腾讯云+校园计划的1元服务器,(https://www.qcloud.com/event/qcloudSchool)安装了Centos7.0,在安装mysql的时候,使用yum l ...
- 15.01.23-sql的注入式攻击
很多网站上有登录和忘记密码的链接,可能存在sql注入的隐患.在忘记密码(把密码发送到邮箱)那里测试. 获取数据 1.'的妙用.在邮箱栏输入emailaddress',如果返回服务器错误,则说明sql注 ...
- android开发(30) 使用WebView,点击网页中的链接建立QQ 临时会话 WPA
在PC端,我们可以通过一个URL链接,点击后启动QQ,这是很好的用户跳转体验.很方便. 使用的链接如下: <a target="_blank" href="http ...
- Hadoop开发相关问题
总结自己在Hadoop开发中遇到的问题,主要在mapreduce代码执行方面.大部分来自日常代码执行错误的解决方法,还有一些是对Java.Hadoop剖析.对于问题,通过查询stackoverflow ...