JAVA基础之訪问控制权限(封装)
包:库单元
- 1.当编写一个Java源码文件时。此文件通常被称为编译单元(有时也被称为转译单元)。
- 2.每一个编译单元都必须有一个后缀名.java,而在编译单元内则能够有一个public类,该类名称必须和文件的名称同样。
- 3.每一个编译单元仅仅能有一个public类。否则编译器就不会接受。
- 4.假设在该编译单元之中还有额外的类的话。那么在包之外的世界是无法看见这些类的。由于它们不是public类。
- 代码组织
- xx.java编译生成xx.class
- package语句必须是文件除凝视以外的第一句程序代码
package:
package com.util.tools; public class Tools { public static void print(Object object) { System.out.println("" + object); }}
import:
package com.test; package com.test; import static com.util.tools.Tools.*; //注意 import java.util.*; public class Test { public static void main(String[] args) { print("Hello Java."); print(Calendar.getInstance().getTime().toString()); }}
- 创建独一无二的包名
- 依照惯例,package名称的第一部分是类的创建者的反顺序的Internet域名
java解释器的执行过程
- 1.找出环境变量CLASSPATH,CLASSPATH包括一个或多个文件夹,用作查找.class文件的根文件夹
- 2.从根文件夹開始。解释器获取包的名称并将每一个句点替换成反斜杠。以从CLASSPATH根中产生一个路径名称
- 3.得到的路径会与CLASSPATH中的各个不同的项相连接,解释器就在这些文件夹中查找与你所要创建的类名称相关的.class文件
- 注:CLASSPATH=.;D:\JAVA;C\flavors\grape.jar //当中JAR文件的实际名称须要写清楚
Java訪问权限修饰词
- public - protected - 包訪问权限(无keyword) - private
- 置于类中每一个成员的定义之前,不管它是域还是方法
- 訪问控制权限常被成为:详细实现的隐藏
- 取得对某成员的訪问权限途径
- 1.使成员成为public
- 2.放在同一包中,不加訪问权限修饰词
- 3.使用继承
- 4.提供訪问器和变异器(get/set方法)
- public:接口訪问权限
- 不论什么类都能够訪问
- protected:继承訪问权限
- protected也提供包訪问权限。同样包内的其它类能够訪问protected权限
- 包訪问权限
- 默认权限。无keyword
- 当前包中的全部其它类对那个成员都有訪问权限,对于包之外的全部类。这个成员却是private
- 默认包:在同样文件夹下,都未定义package,是具有包訪问权限的
- private
- 除了包括该成员的类之外。其它不论什么类都无法訪问这个成员
package com.test; public class Num1 { protected static int i = 0; static int j = 0; private static int k = 0;}
class Num2 { int i = Num1.i; int j = Num1.j; //int k = Num1.k; //不能訪问private。编译报错}
class Num3 extends Num1 { int a = i; int b = j; //int c = k; //子类也不能訪问private域。编译报错}
类訪问权限
- 类能够为public和包訪问权限的。但不能够是private和protected的(内部类除外)。
- 假设不希望其它不论什么人对该类拥有訪问权限,能够把构造器指定为private,从而阻止创建该类对象,但能够在该类内部创建对象。
- 【单例模式】
public class Test { public static void main(String[] args) { Camera mCamera = Camera.newCamera(); }}
class Camera { private static Camera mCamera = new Camera(); private Camera() {} public static Camera newCamera() { return mCamera; }}
总结
- 訪问权限
类内部 | 本包 | 子类 | 外部包 | |
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
包訪问权限 | √ | √ | × | × |
private | √ | × | × | × |
- 訪问权限使用
- 1.类仅仅能用public,protected
- 2.方法,成员变量。局部变量能够使用以上四种权限
JAVA基础之訪问控制权限(封装)的更多相关文章
- C++ 訪问控制权限图解
基类訪问权限 类继承方式 子类訪问权限 public public protected public protected private No Access p ...
- TJI读书笔记09-访问控制权限
TJI读书笔记09-访问控制权限 包,package和import 权限修饰符 接口和实现 类的访问权限控制 首先问一个问题,为什么要有访问控制权限? 安全,这当然是一个很重要的原因. 让类库的使用者 ...
- Phalcon 訪问控制列表 ACL(Access Control Lists ACL)
Phalcon在权限方面通过 Phalcon\Acl 提供了一个轻量级的 ACL(訪问控制列表). Access Control Lists (ACL) 同意系统对用户的訪问权限进行控制,比方同意訪问 ...
- ORA-24247: 网络訪问被訪问控制列表 (ACL) 拒绝
ORA-24247: 网络訪问被訪问控制列表 (ACL) 拒绝 注意:须要在system用户下使用命令 须要先使用 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL 创建訪问控 ...
- Java基础语法与流程控制
Java基础语法与流程控制 跟着狂神学Java的第二天O(∩_∩)O~,养成一个总结的习惯 志同道合的小伙伴可以一起学习狂神的视频 本节地址:https://www.kuangstudy.com/co ...
- C++类訪问控制及继承
一.C++类的訪问控制有三类:public,protected和private. 类訪问控制符 类成员可被哪些对象訪问 public 1.类的成员函数.2.类对象.3.友元.4.子类成员函数 prot ...
- 关于Apacheserver的訪问控制
Apache的訪问控制指对不论什么资源的不论什么方式的訪问控制. 一.基于主机或者IP地址的控制 这样的訪问控制基于訪问者的主机名或者IP地址,通过使用 Deny 和 Allow 指令.实现同意或者禁 ...
- 訪问控制 protected, public, private 对照
OOP 3大特性:数据抽象,继承,动态绑定 3中訪问标号 protected, public, private 对照 用类进行数据抽象:用继承类继承基类的成员,实现继承.通过将基类对应函数声明为vir ...
- php訪问控制
訪问控制通过keywordpublic,protected和private来实现. 被定义为公有的类成员能够在不论什么地方被訪问.被定义为受保护的类成员则能够被其自身以及其子类和父类訪问.被定义为私有 ...
随机推荐
- 【PM】关于系统数据库和服务现场升级的一些看法
工作快满一年了,立即着手准备第二次出差去升级我们的系统,可是突然想到一件事情,让我颇有感触,是关于系统现场升级的. 我们迭代开发的系统隔一段时间就会须要到用户的现场去为其进行系统升级,当中升级包含cl ...
- android开机启动代码
1)public class StartupReceiver extends BroadcastReceiver { @Override public void onReceive(Context c ...
- 查看cache中消耗性能的语句
sqlserver服务器内存偏高,查看下cache中sql消耗情况! /* 查询cache中的语句 说明:可以根据类型.用户数.大小查询 */ ) declare @usecounts int dec ...
- 纯css实现单行”截取“
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JDBC 增删改查代码 过滤查询语句
package test; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; i ...
- springboot 1.5.10 +kotlin 1.2.20 解决 java.lang.ClassNotFoundException: kotlin.reflect.KotlinReflectionInternalError
使用http://start.spring.io/ 下载的 项目 跑单元测试 报 java.lang.ClassNotFoundException: kotlin.reflect.KotlinRefl ...
- tsung 学习
tsung简介: Tsung是开源的基于Erlang语言开发的多协议分布式压力测试工具,它能用来压力测试HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP 和 ...
- canvas 压缩图片的大小
使用 signature_pad canvas 库生成的图片太大.但又没有提供方法来压缩. 当然这是根据你canvas的画布大小决定的,某些原因导致我的画布就得是那么大. 随随便便一个图片转化为bas ...
- django 常用命令 详解
check compilemessages createcachetable dbshell diffsettings dumpdata flush ...
- Memory leak patterns in JavaScript
Handling circular references in JavaScript applications Plugging memory leaks in JavaScript is easy ...