014--包和访问控制权限--利用案例轻松学习Java语言配套PPT
- 格式:ppt
- 大小:2.80 MB
- 文档页数:16
十四、java的访问控制(包、访问修饰符、修饰符)一、 java的类包编写好一个源程序后,首先要执行javac命令进行编译源文件,并生成与源文件同名后缀为“.class”的字节码文件(类文件),该类文件与源文件默认在同一个目录中。
该类文件是由用户创建的,而在java编程环境中,java本身提供了大量的类文件,在编程时可以直接引入使用,极大方便了程序的编写。
包的定义:是Java编程的基础,包蕴涵于标准类的体系结构和用户自己的程序中,包是有唯一命名的类的集合。
在java中,包分为用户包和系统包。
一)用户包:即由用户在项目中创建的包。
在命令提示符下,使用javac编译程序时,将生成类文件,该文件默认与源文件在同一目录下,如果一个项目很大,为了方便组织和管理,一般将不同的类组织起来进行管理,这就需要用户自定义包声明创建包package <包名1>.[<包名2>.[<包名3>..……]]这里,包就是源程序根目录下的文件夹名称,但与window目录结构表示法稍有不同的是,将window目录中的斜杠“\”用实心点“.”来代替。
比如,HelloWorld.java源文件在C:\javaTest目录里,为其源代码声明一个包,这个源程序代码如下:package lib.hellopublic class HelloWorld{//程序的主函数入门public staticvoid main(String args[]){//输出打印字符语句System.out.println("HelloWorld!");}}程序的执行步骤:1、在命令提示符下进入C:\javaTest,编译源程序:javac HelloWorld.java,生成HelloWorld.class类文件。
2、在C:\javaTest目录中新建lib文件夹,在lib文件夹中新建hello 文件夹,将HelloWorld类文件剪切到hello文件夹。
1、课程名称:包及访问控制权限2、知识点2.1、上次课程的主要知识点1、Object类:是所有类的父类,一个类如果没有继承一个类的话,则默认继承Object类,在Object类中的toString()方法主要是取得对象的信息,而equals()方法是专门用于进行对象的比较操作。
2、匿名内部类:匿名内部类在开发中肯定要使用,尤其是在以后的框架开发中更是100%应用,所以此部分必须掌握;3、包装类:将基本数据类型包装成类的形式,就称为包装类,随后也一定要记住的是,包装类中可以存在拆箱及装箱操作,而且使用包装类可以方便的实现字符串向基本数据类型的转换;4、链表程序本身没指望大家可以100%掌握,每个人必须清楚的知道链表的基本实现原理,就是靠引用和this,以后当不知道存放对象个数的时候就可以使用链表完成;5、异常处理的流程,如果程序中产生了异常之后,则JVM会自动的为程序实例化一个异常类的实例化对象,之后在try语句中捕获,如果没有捕获,则交给JVM默认处理,如果捕获的话,则与catch中的异常类型相互匹配,如果匹配成功,则表示可以使用此catch进行处理,最后不管是否出现了异常都会执行finally代码,而且finally代码的作用必须结合标准的异常处理格式来讲,而且异常类的对象传递的时候也依然符合对象的向上转型关系,可以直接使用Exception捕获异常。
6、异常分为两大类:Throwable·Exception:表示的是程序中出现的异常,用户可以进行处理;·Error:表示的是JVM错误,此时程序并没有运行,所以即使出现了错误,程序也无法处理。
2.2、本次预计讲解的知识点1、包的定义及使用;2、JDK 1.5的新特性——静态导入;3、java常用包的简介;4、jar命令;5、访问控制权限。
3、具体内容3.1、包的定义及使用(重点)在实际的工作之中肯定是属于多人进行同一个项目的开发,有可能不同的开发人员会定义同名的操作类,这样一来由于操作系统中一个文件夹中不能存放同一文件,所以肯定会发生覆盖的问题,而且会造成扯皮的问题。
java四种访问权限实例分析引⾔Java中的访问权限理解起来不难,但完全掌握却不容易,特别是4种访问权限并不是任何时候都可以使⽤。
下⾯整理⼀下,在什么情况下,有哪些访问权限可以允许选择。
⼀、访问权限简介访问权限控制:指的是本类及本类内部的成员(成员变量、成员⽅法、内部类)对其他类的可见性,即这些内容是否允许其他类访问。
Java 中⼀共有四种访问权限控制,其权限控制的⼤⼩情况是这样的:public > protected > default(包访问权限) > private ,具体的权限控制看下⾯表格,列所指定的类是否有权限允许访问⾏的权限控制下的内容:访问权限本类本包的类⼦类⾮⼦类的外包类public是是是是protected是是是否default是是否否private是否否否1、public:所修饰的类、变量、⽅法,在内外包均具有访问权限;2、protected:这种权限是为继承⽽设计的,protected所修饰的成员,对所有⼦类是可访问的,但只对同包的类是可访问的,对外包的⾮⼦类是不可以访问;3、包访问权限(default):只对同包的类具有访问的权限,外包的所有类都不能访问;4、private:私有的权限,只对本类的⽅法可以使⽤;注意:要区分开 protected 权限、包访问权限,正确使⽤它们;当某个成员能被所有的⼦类继承,但不能被外包的⾮⼦类访问,就是⽤protected;当某个成员的访问权限只对同包的类开放,包括不能让外包的类继承这个成员,就⽤包访问权限;使⽤访问权限控制的原因:1)使⽤户不要碰触那些他们不该碰触的部分;2)类库设计者可以更改类的内部⼯作的⽅式,⽽不会担⼼这样会对⽤户产⽣重⼤影响;⼆、访问权限控制的使⽤场景访问权限使⽤的场景可以总结为下⾯的五种场景,分别对访问权限的使⽤有不同的限制:1. 外部类的访问控制外部类(外部接⼝)是相对于内部类(也称为嵌套类)、内部接⼝⽽⾔的。
在Java 里,可以将一个大型项目中的类分别独立出来,分门别类地存到文件里,再将这些文件一起编译执行,如此的程序代码将更易于维护。
同时在将类分割开之后对于类的使用也就有了相应的访问权限。
本文将介绍如何使用包及访问控制权限。
一、包(package)的基本概念当一个大型程序由数个不同的组别或人员开发共同开发时,用到相同的类名称是很有可能的事。
如果这种情况发生,还要确保程序可以正确运行,就必须通过package 关键字来帮忙了。
package 是在使用多个类或接口时,为了避免名称重复而采用的一种措施。
那么具体应该怎么使用呢?在类或接口的最上面一行加上package 的声明就可以了。
【格式1 package 的声明】package package 名称;经过package 的声明之后,在同一文件内的接口或类都被纳入相同的package 中。
程序TestPackage1 是使用package 的一个范例,如下所示:范例:TestPackage1.java01 package demo.java02 class Person03 {04 public String talk()05 {06 return "Person ——>> talk()"07 }08 }0910 class TestPackage111 {12 public static void main(String[] args)13 {14 System.out.println(new Person().talk())15 }16 }在TestPackage1.java 中,除了第1 行的加的package demo.java 声明语句之外,其余的程序都是读者见过的。
由于第1 行声明了一个demo.java 的包,所以就相当于将Person 类、TestPackage1 类放入了demo.java 文件夹之下。
访问权限是java中一个比较中要的知识点,它规定者什么方法可以访问,什么不可以访问一:包访问权限;自定义包:package com.wj.control;//包public class Demo {//定义一个无参的方法public void DemoPackage(){System.out.println("调用了Demo类的方法");}}使用系统的类时,系统会自动的提示我们需要import 包,然后才能使用里面的方法二:public 公共的; public里面的数据对本工程中的类都是可以使用的三: private 私有的:只有本类中的类才可以使用该数据,1, PrivateDemo主类中访问PrivateMain中的private方法:关键代码:private方法的类package com.wj.control;/*8* private方法*/public class PrivateMain {//定义私有方法 ;private只有在本类中才能访问,所以使用mianDemo访问mian private void mian(){System.out.println("private方法执行了");}//public的方法调用私有的方法public void mianDemo(){//调用mian()方法mian();}}主类:package com.wj.control;/*8* 操作PrivateMain中的私有方法*/public class PrivateDemo {public static void main(String[] args) {//创建对象调用方法new PrivateMain().mianDemo();}}运行结果:private方法执行了程序的执行顺序: 创建对象-->执行对象的mianDemo()方法-->mianDemo()调用mian方法2,Private实现简单的单例模式:单例模式:将构造方法改为私有的,对象也该为私有的属性package com.wj.control;//单例模式public class A {private static A a = null;// 将构造函数私有化,不允许以new方式创建对象private A() {System.out.println("执行了");}//创建方法判断给别的类调用public static A getConn() {//判断A对象是否存在,存在就直接返回if (a != null) {return a;}//不存在A对象就创建A对象a = new A();return a;}}主类中调用:package com.wj.control;public class DemoA {public static void main(String[] args) {//A是static可以直接使用A.getConn();}}运行结果:执行了分析:有人可能会觉得奇怪,为什么不是通过new来创建对象的,主要原因就是我们A 类中将构造方法设置为private ,所以不能通过new来创建对象,这种模式我们称为单例模式,好处就是当A类中的方法特别消耗内存的时候可以采用该方法严格控制A对象的创建四:protected继承访问权限直接上代码:public class People {//定义一个People的基类public void print(){//公共方法System.out.println("基类中的公共方法");}private void printPrivate(){//私有方法System.out.println("基类的私有方法");}protected void printProtected(){//protected方法System.out.println("基类printProtected()");}}//继承People类public class PeopleDemo extends People {public static void main(String[] args) {PeopleDemo demo =new PeopleDemo();//创建子类对象//demo.printPrivate();//调用父类的私有方法,父类私有的方法子类不可以使用 demo.printProtected();//调用父类的Protected方法demo.print();//调用父类的公共方法}}运行结果:基类printProtected()基类中的公共方法public 和Protected的数据子类是可以拿到的五:类的访问权限;1,类一般为公共的2,类名个构造函数的名字是一样的2,当有多个类时,只能有一个为public。
包及访问控制权限1、课程名称:包及访问控制权限2、知识点2.1、上次课程的主要知识点1、Object类:是所有类的父类,一个类如果没有继承一个类的话,则默认继承Object类,在Object类中的toString()方法主要是取得对象的信息,而equals()方法是专门用于进行对象的比较操作。
2、匿名内部类:匿名内部类在开发中肯定要使用,尤其是在以后的框架开发中更是100%应用,所以此部分必须掌握;3、包装类:将基本数据类型包装成类的形式,就称为包装类,随后也一定要记住的是,包装类中可以存在拆箱及装箱操作,而且使用包装类可以方便的实现字符串向基本数据类型的转换;4、链表程序本身没指望大家可以100%掌握,每个人必须清楚的知道链表的基本实现原理,就是靠引用和this,以后当不知道存放对象个数的时候就可以使用链表完成;5、异常处理的流程,如果程序中产生了异常之后,则JVM会自动的为程序实例化一个异常类的实例化对象,之后在try语句中捕获,如果没有捕获,则交给JVM默认处理,如果捕获的话,则与catch中的异常类型相互匹配,如果匹配成功,则表示可以使用此catch进行处理,最后不管是否出现了异常都会执行finally代码,而且finally代码的作用必须结合标准的异常处理格式来讲,而且异常类的对象传递的时候也依然符合对象的向上转型关系,可以直接使用Exception捕获异常。
6、异常分为两大类:Throwable·Exception:表示的是程序中出现的异常,用户可以进行处理;·Error:表示的是JVM错误,此时程序并没有运行,所以即使出现了错误,程序也无法处理。
2.2、本次预计讲解的知识点1、包的定义及使用;2、JDK 1.5的新特性——静态导入;3、java常用包的简介;4、jar命令;5、访问控制权限。
3、具体内容3.1、包的定义及使用(重点)在实际的工作之中肯定是属于多人进行同一个项目的开发,有可能不同的开发人员会定义同名的操作类,这样一来由于操作系统中一个文件夹中不能存放同一文件,所以肯定会发生覆盖的问题,而且会造成扯皮的问题。
浅析Java中的访问控制权限Java中为什么要设计访问权限控制机制呢?主要作⽤有两点:(1)为了使⽤户不要触碰那些他们不该触碰的部分,这些部分对于类内部的操作时必要的,但是它并不属于客户端程序员所需接⼝的⼀部分。
(2)为了让类库设计者可⽤更改类的内部⼯作⽅式,⽽不必担⼼会对⽤户造成重⼤影响。
Java中的访问权限控制的等级,按照权限从⼤到⼩依次为:Public -> protected -> 包访问权限(没有权限修饰词)-> private。
⼀、包(package)Java中包(package)的概念和C++中命名空间(namespace)的概念很类似,都可以限制类的作⽤域。
⼆者最⼤的差别在于,Java中的包隐式地指明了类的树形层级结构(同时也是Java源码⽂件的⽬录结构)。
这样做的好处在于:可以通过⽂件系统中对于⽂件路径唯⼀性的要求来限制类的唯⼀性。
1、代码组织编写⼀个Java源代码⽂件(.java⽂件)时,此⽂件通常被称为编译单元。
在编译单元内最多允许有⼀个public类,且该类的名称必须与⽂件名完全相同(包括⼤⼩写)。
编译⼀个.java⽂件时,在.java⽂件中的每个类都会有⼀个.class输出⽂件,这个⽂件名和类名是相同的。
Java可运⾏程序是⼀组可以打包并压缩为⼀个Java⽂档⽂件(JAR包,使⽤Java的jar⽂档⽣成器)的.class⽂件。
Java解释器负责这些⽂件的查找、装载和解释。
类库实际上是⼀组类⽂件。
其中每个.java⽂件最多允许有⼀个public类,以及任意数量的⾮public类。
因此,每个⽂件都有⼀个构件。
如果要将这些构件(每个构建有⼀个.java⽂件和若⼲个.class⽂件)组织起来,形成不同的群组,可以使⽤Java中的关键字package。
2、包(package)的作⽤(1) 把功能相似或相关的类或接⼝组织在同⼀个包中,⽅便类的查找和使⽤。
(2) 如同⽂件夹⼀样,包也采⽤了树形⽬录的存储⽅式。