ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:87.04KB ,
资源ID:14627188      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-14627188.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(包及访问控制权限.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

包及访问控制权限.docx

1、包及访问控制权限1、课程名称:包及访问控制权限2、知识点2.1、上次课程的主要知识点1、 Object类:是所有类的父类,一个类如果没有继承一个类的话,则默认继承Object类,在Object类中的toString()方法主要是取得对象的信息,而equals()方法是专门用于进行对象的比较操作。2、 匿名内部类:匿名内部类在开发中肯定要使用,尤其是在以后的框架开发中更是100%应用,所以此部分必须掌握;3、 包装类:将基本数据类型包装成类的形式,就称为包装类,随后也一定要记住的是,包装类中可以存在拆箱及装箱操作,而且使用包装类可以方便的实现字符串向基本数据类型的转换;4、 链表程序本身没指望大

2、家可以100%掌握,每个人必须清楚的知道链表的基本实现原理,就是靠引用和this,以后当不知道存放对象个数的时候就可以使用链表完成;5、 异常处理的流程,如果程序中产生了异常之后,则JVM会自动的为程序实例化一个异常类的实例化对象,之后在try语句中捕获,如果没有捕获,则交给JVM默认处理,如果捕获的话,则与catch中的异常类型相互匹配,如果匹配成功,则表示可以使用此catch进行处理,最后不管是否出现了异常都会执行finally代码,而且finally代码的作用必须结合标准的异常处理格式来讲,而且异常类的对象传递的时候也依然符合对象的向上转型关系,可以直接使用Exception捕获异常。6

3、、 异常分为两大类:Throwable Exception:表示的是程序中出现的异常,用户可以进行处理; Error:表示的是JVM错误,此时程序并没有运行,所以即使出现了错误,程序也无法处理。2.2、本次预计讲解的知识点1、 包的定义及使用;2、 JDK 1.5的新特性 静态导入;3、 java常用包的简介;4、 jar命令;5、 访问控制权限。3、具体内容3.1、包的定义及使用(重点) 在实际的工作之中肯定是属于多人进行同一个项目的开发,有可能不同的开发人员会定义同名的操作类,这样一来由于操作系统中一个文件夹中不能存放同一文件,所以肯定会发生覆盖的问题,而且会造成扯皮的问题。 那么要想解决

4、这个问题,只能靠文件夹区分,因为不同的文件夹可以存放同名的文件,而所谓的包就是指一个文件夹,如果程序中加上包之中,则完整的类名称就是:“包.类”名称。3.1.1、定义包 如果要想定义一个包的话,可以使用package关键字完成。package org.lxh.demo ; / 定义包public class Hello public static void main(String args) System.out.println(Hello World !) ; 现在的程序之中一旦定义了包之后,则完整的类名称就是“org.lxh.demo.Hello”,可是按照包的定义来讲,现在一个类肯定是要

5、保存在文件夹之中,所以在java之中,如果程序中存在了包的话,则编译的时候加上“-d”的参数就会表示自动的根据package的定义生成文件夹:javac -d . Hello.java “-d”:要根据定义的包,生成文件夹; “.”:表示要生成文件夹的目录,“.”表示在当前所在的文件夹之中生成。 一旦程序打包之后,则以后程序运行的话都必须加上包名称,即:java org.lxh.demo.Hello,而不能说进入到包中直接运行。 从实际开发来讲,每一个类必须存放在一个包中,而且没有包的类是100%不存在的。3.1.2、导入包 一个类一旦放在了包中之后,则就会牵扯到包的导入问题,例如,现在要导入

6、某一个包中的某些操作类,此时,就必须依靠import关键字完成。范例:定义如下的一个类package org.lxh.demoa ;class Message public void getInfo() System.out.println(世界,你好!) ; 之后再定义一个Test.java程序,此程序定义在“org.lxh.demob”包中,并且要使用Message类,这个时候肯定要牵扯到导包的操作。package org.lxh.demob ;import org.lxh.demoa.Message ; / 导入包.类public class Test public static voi

7、d main(String args) new Message().getInfo() ; 现在两个程序编写完成之后下面需要对程序进行编译,现在应该先编译Message.java,之后再编译Test.java,因为Test.java程序使用了Message.java,所以必须先将Message编译成*.class文件。总结:关于public class和class声明类的区别 public class声明类:文件名称必须与类名称保持一致,在一个*.java文件之中只能定义一个public class,如果一个类希望被外包所访问,则使用public class; class声明类:文件名称可以与

8、类名称不一致,但是运行的时候必须运行类名称,在一个*.java中可以定义多个,如果一个类只能被本包所访问,则使用class;范例:修改Message.java类package org.lxh.demoa ;public class Message public void getInfo() System.out.println(世界,你好!) ; 但是这里面有一个问题了,以上是按照“包.类”的形式一个个导入的,如果现在要同时导入某一个包的多个类,那么按照以上的做法肯定要写多条导入语句,这样很麻烦,所以在java中专门提供了一个通配符“*”,表示自动导入所需要的操作类。import org.lx

9、h.demoa.* ; / 导入包.类 问题:如果现在使用“*”导入那么与单独导入一个类相比,是不是性能会差很多呢? 单独导入和使用*的形式导入在性能是一样的,因为java程序即使使用了*,也只会导入所需要的类,而不需要的类一概不导入。 但是在导包的操作中会存在一个比较麻烦的问题,就是有可能同时会导入相同类的不同包。package org.lxh.demox ;public class Message public void say() System.out.println(今天下雨了。) ; 现在有两个Message类:org.lxh.demoa.Message、org.lxh.demox.

10、Message,可是现在在Test.java中由于自身的需要,需要同时导入demoa和demox两个包。package org.lxh.demob ;import org.lxh.demoa.* ; / 导入包.类import org.lxh.demox.* ; / 导入包.类public class Test public static void main(String args) new Message().getInfo() ; 此时两个包中都存在了Message类,所以,程序编译的时候将出现如下的问题:Test.java:6: reference to Message is ambig

11、uous, both class org.lxh.demox.Message in org.lxh.demox and class org.lxh.demoa.Message in org.lxh.demoa match new Message().getInfo() ; 1 error 在这种情况下,为了准确的知道要使用的是那一个类,所以在使用类的时候建议加上包的名称。package org.lxh.demob ;import org.lxh.demoa.* ; / 导入包.类import org.lxh.demox.* ; / 导入包.类public class Test public s

12、tatic void main(String args) org.lxh.demoa.Message msg = new org.lxh.demoa.Message() ; msg.getInfo() ; 3.1.3、JDK 1.5的新特性 静态导入(理解) 如果现在假设一个包中的一个类都是由静态方法所组成的话,则按照最早的思路,肯定是要先导包,之后再通过“类.方法()”的形式调用类中的操作。package demot ;public class MyMath public static int add(int x,int y) return x + y ; public static int

13、 sub(int x,int y) return x - y ; 范例:下面按照最早的方式导入包,并且进行操作package org.lxh.demob ;import demot.* ; / 导入包.类public class Test public static void main(String args) System.out.println(MyMath.add(10,20) ; System.out.println(MyMath.sub(10,20) ; 但是由于现在的MyMath类中的方法都是static型的方法,所以下面可以修改导入操作。package org.lxh.demob

14、 ;import static demot.MyMath.* ; / 导入包.类public class Test public static void main(String args) System.out.println(add(10,20) ; System.out.println(sub(10,20) ; 但是,此特性只要知道即可,实际中千万别用。3.2、jar命令(重点) 在实际的开发之中,用户开发好的程序肯定要交给客户使用,但是按照之前的开发可以发现,所有的程序都是以*.class文件的形式存在的,那么一个项目之中肯定有几万个*.class,如果将这些文件散着给用户,不方便,那么

15、就需要打包。 在JDK之中专门提供了一个jar命令,通过jar命令可以完成打包操作,直接输入即可。package org.lxh.demo ; / 定义包public class Hello public static void main(String args) System.out.println(Hello World !) ; 现在定义了一个Hello.java的程序,之后对此程序进行打包编译:javac -d . Hello.java,生成了*.class文件之后,下面就需要将程序打成*.jar包的形式,输入:jar -cvf my.jar org my.jar生成之后可以直接使用W

16、inRAR打开。 虽然jar文件可以通过WinRAR打开,但是这个文件的格式与WinRAR是完全不一样的,所以不能混淆。 下面编写一个程序测试之前生成的my.jar文件的操作。package org.lxh.test ;import org.lxh.demo.* ;public class Test public static void main(String args) Hello.main(args) ; 但是现在在编译的时候会发现系统提示org.lxh.demo包不存在,可是这两个包现在却保存在同一个文件夹之中,那么可以得出结论,即使jar文件与程序在同一个文件夹之中也不能直接访问,需要

17、配置classpath。SET CLASSPATH=.;d:testjavamy.jar 一个jar文件要想使用必须在CLASSPATH中进行配置,当然,对于CLASSPATH也有另外一种配置形式,可以直接通过属性指定:3.3、系统常用包(理解) 一个语言平台的发展取决于平台的支持性如何,例如:之所以现在的开发语言主要就是JAVA、.NET,主要是因为这两大平台后面有大公司的支持,所以,一旦有什么新的要求,平台上可以立刻提供给开发者,而这些新的要求都会以一个个开发包的形式出现的,而java中就提供了大量的开发包,实际上包括以后的应用过程很长一段的时间之内,是巩固这些开发包中所提供的类库,常用的

18、几个开发包如下: java.lang:是一个默认的操作包,像String、Object等都是此包提供的,在JDK 1.1之后,此包为默认导入; java.lang.reflect:为反射操作包,也是java中最麻烦的一部分内容,而且应用相当广泛; java.util:工具包; java.io:提供IO操作的开发包; java.sql:数据库编程开发包,可以直接进行数据库的操作; :网络程序开发包; java.awt、javax.swing:为图形界面开发包;解释:关于图形界面的问题? 图形界面的操作在整个java体系之中基本上就已经属于被废除的状态,但是不会废除,因为还有市场。 如果从java

19、的发展来看,图形界面的展示绝对是java发展的一个最大特点,因为java程序最早的时候是依靠Applet程序执行的,而Applet程序主要是使用各个图形元素以达成相当华丽的显示效果。 而Applet中最早的时候使用的就是java.awt开发包,但是这个开发包属于重量级的开发包,它使用的时候需要依靠大量的windows的底层函数的支持,所以后来SUN的设计人员又开发出了一套轻量级的组件(javax.swing),但是此组件由于使用的是java开发,不受任何的操作系统限制。 当时微软公司致力于.NET平台的推广,而.NET中最早的组成:VB、VC、ASP.NET、J#,J#实际上就是java语言,

20、可是微软公司将这个语言的内核修改了,重新变成了J#,后来到Windows XP的时候,微软公司干了一件事情,就是让所有的windows平台默认不再支持JVM了,Java程序不能再直接运行了,但是需要额外的安装,经过这若干件事情之后,微软发现打不过了,就和好了,根据J#的平台特点修改出了今天的C#,所以直到今天为止,C#的语法和Java是非常相似的,但同时一个问题就出现了,很多人发现,java的平台做单机程序实在是不方便,而且会受到局限,从而促使了java向网络方向发展。 Applet作为Java出现的一个始祖其本身的技术地位是相当高的,但是其本身也由于图形界面的原因,以及速度的原因导致了今天基

21、本上不再使用了。范例:编写一个Applet程序。package org.lxh ;import java.applet.* ;import java.awt.* ;public class MyApplet extends Applet public void paint(Graphics g) g.drawString(Hello World,10,20) ; g.drawLine(20,30,80,90) ; 编译之后,下面还需要编写一个 html文件,通过此文件使用Applet程序。 通过浏览器就可以运行Applet程序了。 而且咱们之前所编写的所有程序都是由主方法开始执行,所以这种程序

22、也称为Application程序。3.4、访问控制权限(重点) 在java之中关于访问控制权限一共有四种:private、default、protected、public,这四种访问控制权限的特点如下。No.范围privatedefaultprotectedpublic1同一个类中2同一包的其他类3不同包的子类4不同包的非子类 对于private、default、public基本上都比较熟悉了,下面观察一下protected,不同包的子类可以访问。范例:定义一个操作类package helloa ;public class A protected String name = hello ;范例

23、:定义不同包的子类package hellob ;import helloa.* ;class B extends A public void print() System.out.println(super.name) ; class Test public static void main(String args) new B().print() ; 现在是在子类访问的,如果现在要想在Test访问呢,由于Test与A类相比,属于不同包的非子类,所以访问的话会出现如下的问题:class Test public static void main(String args) new B().nam

24、e = HELLO ; B.java:10: name 可以在 helloa.A 中访问 protected new B().name = HELLO ; 1 错误3.5、命名规范(重点) 任何的开发都有其命名的操作标准,标准随着开发公司的不同也会有所不同,但是对于类的开发规范是统一的: 类名称,每个单词的开头首字母大写,例如:TestJava; 属性,第一个单词的首字母小写,之后每个单词的首字母大写,例如:studentName; 方法,第一个单词的首字母小写,之后每个单词的首字母大写,例如:printMsg(); 常量,要求每个单词的字母必须大写,例如:final INFO = ; 包名称

25、,要求全部的单词小写,例如:org.lxh.demo 开发中必须严格遵守以上的命名规范,否则写的代码太业余了。3.6、类图的表示(理解) 在工作之中,像类、接口等都会通过一些特定的图形来进行表示,只要是见到了这些图形的话,就应该可以立刻的知道类或接口的基本组成,如果要想画出类图的话,则可以采用以下的图形形式:类名称属性方法 关于属性的编写,如果要想编写属性的话,则属性的格式如下:“访问权限 属性的名称:属性类型”, 访问权限主要是三种:public(+)、protected(#)、private(-) 例如:private String name -name:String 关于方法的编写,与属

26、性的编写是类似的,格式“访问权限 方法名称():方法返回值” 例如:public String getName() +getName():String 但是,如果所有的代码编写之前都要使用这种方式去画图的话,则肯定很麻烦,往往在开发之中会使用许多的设计工具,而PowerDesigner工具就可以完成此功能。 以后可以直接根据这样的图形可以知道类的组成,当然,在PowerDesigner设计工具之中,也可以将以上的图形变为java程序代码。 除了表示出了之外,也可以表示出抽象类和接口,例如:从之前的设计来讲,Person应该是一个抽象类比较合适,现在将其变为抽象类,而且定义两个接口。 但是,这种

27、画法与编写程序相比肯定编写代码方便,所以在PowerDesigner工具之中,也提供导入的操作,可以自动的将代码变为图形显示。 除了这种类图之外,还可以表示出时序图,就是表示某一个操作调用的顺序,例如:以工厂设计为例 客户 工厂 取得接口实例 调用接口方法。 还有一种图称为用例图,表示的是某一个角色所应该具备的功能。 这种图形一般在设计文档中出现较多,表示某一种用户所具备的功能是那些。4、总结 面向对象部分为整个Java中的核心部分,此部分的重要内容:1、 类和对象的关系以及内存分配;2、 static定义的操作可以不受对象产生与否的控制;3、 继承可以扩充已有类的功能,但是从实际来讲不能继承普通类,只能继承抽象类和实现接口;4、 接口和抽象类的使用特点,及接口中设计到的主要的开发模式的代码必须可以背下来;5、 不管如何操作,多态性永远离不开方法的操作;6、 异常处理依然属于多态性的一种体现;7、 程序分包和访问权限之后,可以将一个大型的程序进行若干个细化的拆分。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2