欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    第6章面向对象程序设计基础(下).ppt

    • 资源ID:3432050       资源大小:1.48MB        全文页数:76页
    • 资源格式: PPT        下载积分:8
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要8
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第6章面向对象程序设计基础(下).ppt

    面向对象程序设计基础(下 ) q包和jar文件 q静态属性 q静态方法 q限定符 q接口 q内部类 q枚举 包(package) n在操作系统中,目录用来组织文件,设置权限。 nJava利用包来组织相关的类,并控制访问权限。 n包是一种松散的类的集合。一般不要求处于同一 个包中的类有明确的相互关系,如包含、继承等等 。 n由于同一包中的类在缺省情况下可以互相访问, 所以为了方便编程和管理,通常把需要在一起工作 的类放在一个包里。 n利用包来管理类,可实现类的共享与复用(类库 )。 编译单元 n一个java源代码文件称之为一个编译单元。 n一个编译单元中只能有一个public类,该类名与 文件名相同。编译单元中的其他类是该主public类 的支撑类。 n经过编译,编译单元中的每个类都产生一个 .class文件。 njava的工作程序是一串.class文件, JAVA解释器 负责寻找、加载和解释这些文件。 (不象其它语言最终生成一个.exe的可执行文件 ) 类的名字空间 n所有类成员的名字都是相互隔离的。类A中的方 法m1与类B中的方法m1互不相干,但类名就有冲 突的问题了。 n在一个Java程序运行过程中,某些类会从 internet上自动下载,而用户并不知晓。所以在java 中需要名字空间的完全控制,以便可以建立一个唯 一的类名。 n包用于类的名字空间管理。 n作为包的设计人员,利用包来划分名字空间以避 免类名冲突(package 和 import) 包与目录 n一个包可以包含若干个类文件,还可包含若干包。 n一个包要放在指定目录下。 nCLASSPATH环境变量指定搜寻包的路径。 n包名本身又对应一个目录(用一个目录表示)。 p3 p2 d:d1 d2 类 classpath = d:d1; d:d1d2 p1 包对应的目录 编译单元与当前包 n显式指定编译单元的当前包。 package 包名 ; n编译单元对当前包可以读写。 n在一个编译单元中,只能有一个package语句, 且为第一个语句。 n包名可以有层次,以小数点分割。 n包名一般全小写(类名第一个字母大写) 。 n如果编译单元中无package语句,则隐含的当前 包是一个无名包(放在当前目录下)。 n实际编程中不提倡在无名包中定义类。 包和源文件的存储位置 n多数开发工具会按照包名对应的目录结构存储源 文件。下面的图右侧显示了在NetBeans工程中,源 文件和编译生成的类文件所在的目录结构。 package bo; public class Login /实现代码 hrMgn srcbuild classes bo bo Login.java Login.class 使用包中的类 nimport语句将指定包中的类引入当前的名字空间 ,即告诉编译到哪去找程序中使用的类。 n import语句必须出现在所有类定义之前,但应在 包声明之后。 例:import java.util.* ; 该语句引入整个utility 类库(标准Java库的一部 分) 例:import java.util.Vector ; 该语句只引入Vector类,但utility类库中的其他类 不可用。 从包中加载类 n当程序需要建立一个类的对象,或是第一次访问 类的静态成员时,会动态加载类文件。 nJAVA解释器加载类过程: =将环境变量CLASSPATH包含的一个或多个目录 作为起始目录。 =解释器取出包名,将小数点换成斜杠,产生以 CLASSPATH目录为起点的查找路径。 =查找目录下的 .class文件 nimport p1.p2.* 转换为 p1p2*.class 或 p1/p2/*.class (取决于操作系统) 编译单元与包 n不管“当前包”是显式指定还是采用隐含值,总是 当前名字空间的一部分。 nimport语句是将其他包的类引入当前的名字空间 。 n对象三步曲: =打开包(import) =加载类(程序中只有类定义的一份拷贝) =建对象(用new运算符可以创建一个类的若干实 例) 编译 单元 当前包 package 其他包 其他包 import 使用javac创建包对应的目录 package mypk ; public class TestPk javac d d: TestPk.java 会在该d:下建包目录 import mypk.* ; public class Test public static void main(String args) TestPk tp = new TestPk() ; . set CLASSPATH=d: ;%CLASSPATH% 1 jar文件 njar是JDK提供的一个实用工具,可将多个类文件 压缩在一个文件中,生成的文件的扩展名为.jar, 默认的压缩算法为zip。 njar的用法: jar cf j.jar *.class 建立jar文件 jar tf j.jar 列出jar文件中包含的所 有文件 njar文件将类文件打包成一个文件,方便了类文件 的分发,jar文件也被称为类库文件 互联网上的jar文件 n互联网上有很多类库供开发者使用,其中Apache 组织的Jakarta Commons项目包含了许多实用类库, 可在http:/commons.apache.org下载这些类库。 Jakarta commons 类库下载页面 Manning 出版社的 Jakarta Commons 书 d:liblib1.jar;d:liblib2.jar;%classpath% jar文件和CLASSPATH环境变量 n如果在编译或运行时需要使用jar类库提供的类, 可以将jar文件列入在classpath环境变量中,这样 javac和java这两个指令在执行时都会在classpath所 指定的jar文件中搜索需要的类文件。 n例如,假设某2个jar文件分别为lib1.jar和lib2.jar ,存放d:lib目录中,如果在编译或运行Java程序时 需要引用这两个jar文件中的类,则可在控制面板- 系统对话框中将classpath环境变量的值设置为: 类变量(静态变量) n类变量为类的各实例共享的变量。 static 静态变量 ; n位于类的内存区域中,为该类的各个对象共享. n无此限定符的变量是实例变量。 class ex int i ; static int j ; static final int k=10 ; - n为节省空间, final 常量可同时 定义为static 类ex j k=10 对象1 i : 3 对象2 i : 5 类变量(静态变量) n实现各实例之间的通讯。 n跟踪创建的实例数。 public class Count private int serial ; /成员变量 private static int counter = 0 ; /类变量 public Count() counter+; serial = counter ; n静态变量类似于某些语言中的全局变量。 类变量(静态变量) n非private 的静态变量无须创建实例就可以从类 的外部访问。 public class StaticVar public static int x ; public class test public void m() int m = StaticVar.x ; 2 类变量(静态变量) class PhoneCard200 static final String connectNumber = “200”; static double additoryFee; long cardNumber ; int password; boolean connected; double balance; 3 类变量(静态变量) public class a public static void main(String args) PhoneCard200 my200_1 = new PhoneCard200(); PhoneCard200 my200_2 = new PhoneCard200(); PhoneCard200.additoryFee = 0.1; System.out.println(“第一张200卡的接入号码:” + my200_1.connectNumber); System.out.println(“200卡接入号码:” + PhoneCard200.connectNumber); System.out.println(“第二张200卡的附加费: ” + my200_2.additoryFee); System.out.println(“200卡类的附加费:” + PhoneCard200.additoryFee); 类方法( 静态方法) n类方法: static 方法名 () n使用类方法不用创建类的对象。调用这个方法时 ,应该使用类名做前缀,而不是某一个具体的对象 名。 n非static的方法是对象方法(或称实例方法)。 n类方法中不能访问实例变量,而只能访问类变量 (static方法 static域)和自己的方法参数。 n类方法中不能直接使用本类中的实例方法,只能 使用其他的static方法。 n类方法中没有this值。 类方法( 静态方法) public class a public static void main(String args) System.out.println(Math.round(3.54); String s = to_char(2.718); System.out.println(“e=“ + s ); static String to_char(double x) return Double.toString(x); 4 类方法( 静态方法) nmain方法是静态方法,这是为了系统在没有任何 实例化对象之前可以运行一个应用程序。 n如果main方法要调用本类的其它方法: =将这些方法设计成静态方法, =创建对象,使用对象方法。 n一个静态方法不能被一个非静态方法所覆盖。 静态导入 nJDK1.5引入了静态导入: import static 包名.类名.静态属性或方法名; 或 import static 包名.类名.*; n通过静态导入,使用类中的静态成员时,可以省 略成员前的类名。 n例: import static java.lang.Math.*; /导入Math类所有静态成员 import static java.lang.Math.sin; /明确导入Math的sin方法 / double r1=Math.sin(2*Math.PI); /以前的调用方式 double r2=sin(2*PI); /静态导入后,简化的调用方式 类的初始化-静态初始化器 n由关键字static引导的一对大括号括起的语句组。 用来完成类的初始化的工作, n与构造方法的区别: = 构造方法是对每个新创建的对象初始化, 而静态初始化器是对类自身进行初始化; = 构造方法是在用new运算符产生新对象时 由系统自动执行,而静态初始化器则是在它 所属的类加载入内存时由系统调用执行; = 不同于构造方法,静态初始化器不是方法 ,没有方法名、返回值和参数列表。 5 小结类与对象 n面向对象的数据和方法: =一个类的对象虽然具有相同的属性,但却各不相 同(属性值不同)。 =一个类的对象方法虽然具有相同的代码,但表现 不同,因为方法所操作的对象(数据)不同。 n共享的数据和方法: =类属性在同一类的实例中共享数据(该数据 不属于一个对象,而属于一个类)。 =类方法不需要实例就能使用静态的方法和数 据,虽然它们也能通过实例来访问。 小结类与对象 n类名.属性名 静态属性,在类的空间里,是该类对象共享的单元 n类名.方法名 静态方法 类方法的调用 n类方法和属性也可以用对象名调用,但最好用类名 =通过静态导入,可以直接使用静态属性名或静态方法名 (JDK1.5) n对象名.属性名 实例变量 。提倡通过方法操作属性。 n对象名.方法名 方法调用又称“消息传递”,实际上就是给指定对象发送消 息:告诉它做什么,向它要信息(方法的返回值)。 小结类与对象 n访问一个类: =创建该类的对象,并使用该类对象的可见属性与 方法。 =调用该类的可见静态方法,访问该类的可见静态 属性。 =继承该类。 nfinal =final类不能被继承。 =final 方法不能被覆盖。 =final 属性不能被修改。 访问控制符 n访问控制符是一组起到限定类、域或方法是否可 以被程序里的其他部分访问和调用的修饰符 。 n类访问控制符 =公共类 :public 类名 =一般类 n一个包中的类只能访问另一个包中的public类。 n一般类只能在同一包中使用,一个包中的类不用 说明可相互访问。 n把常在一起协同工作的类放在一个包里是很自然 的。 n一个类作为整体对程序的其他部分可见,并不能 代表类内的所有域和方法也同时对程序的其他部 分可见,前者只是后者的必要条件 n属性和方法的可见性 属性和方法的访问限定符 public公共属性和公共方法,可被任何类使 用。 protected可被同包中其他类使用。 可被子类继承(包括位于不同包中的 子类) 不同包,只能被继承,不能使用 无访问限 定符 可被同包中其他类使用。 不同包,不能使用,也不能继承 private只限在本类内使用。 属性和方法的访问限定符 n为了使对象具有良好的封装性,一般将类的非静 态属性设计成私有。 n为了使其它类或对象能够访问这些私有属性,本 类必须提供访问私有属性的方法(公共方法)。 n按照惯例,读私有属性的方法取名为get 写私有属性的方法取名为 set ,get/set后面跟 上属性的名称,其中属性的第一个字母要大写。 这些方法在术语上叫做Setter/Getter方法。 接口 n“接口”和抽象类有些类似。 n接口中的方法都是没有方法体的抽象方法。 n接口中只能定义 static final 属性 。 n接口定义的仅仅是实现某一特定功能的一组功能 的对外接口和规范,而并没有真正地实现这个功能 。 n接口的功能实现是在“继承”了这个接口的各个类 中完成的,由这些类来具体定义接口中所有抽象方 法的方法体。 n通常把对接口的“继承”称为“实现”。 接口的实现 Object 类 Abstract class class final class 接口 class java单重继承 继承 实现 接口的定义 public interface 接口名 extends 父接口名列表 / 常量域声明 public static final 域类型 域名 = 常量值; / 抽象方法声明 public abstract 返回值类型 方法名( 参数列表 ) ; n接口是由常量和抽象方法组成的特殊类。 接口的实现 public class MyApplet extends Applet implements Runnable , MouseListener n一个类只能有一个父类,但是它可以同时实现若 干个接口。如果把接口理解成特殊的类,那么这个 类利用接口实际上就获得了多个父类,即实现了多 继承。 ninstanceof 运算符可用来判断一个对象的类是否 实现了某个接口。 接口例 interface CalArea double pi = 3.14 ; double calRArea(double r) ; class CalAreaImp implements CalArea public double calRArea(double r) return pi * r *r ; public void main(String args) CalAreaImp imp=new CalAreaImp(); if(imp instanceof CalArea) /此处返回true System.out.println( imp.calRArea(5); 6 接口的规定 n类定义中使用 implements 指定实现某一接口 n类中必须具体实现该 interface 中定义的抽象方 法。 n实现的方法必须指定为public限定符。 n实现接口的类要实现接口的全部方法。如果不需 要某个方法,也要定义成一个空方法体的方法。 public 方法名() 接口类型的变量和实现类的实例 n可以声明接口类型的变量和接口类型的参数。 n接口的实现类和接口之间的存在着类型兼容性, 由于这个原因,所以: =接口类型的变量可以接受传递给它的实现类的实 例 =接口类型的参数可以接受传递给它的实现类的实 例 n利用接口类型的变量或参数存储实现类的实例, 是面向对象编程的重要方法多态 接口类型变量和参数示例 interface I void doSome(); class IC1 implements I/接口I的实现类IC1 public void doSome() System.out.println(“IC1 impl“); class IC2 implements I/接口I的另一个实现类 public void doSome() System.out.println(“IC2 impl“); class Test static void testI(I i) /接口类型的参数 i.doSome(); /见下页 接口类型变量和参数示例(续) /接上页 public static void main(String s) /接口类型的变量i,赋予IC1的实例 I i = new IC1(); i.doSome(); /此时调用IC1中的实现方法 /将IC2的实例赋予i i = new IC2(); i.doSome(); /此时调用IC2中的实现方法 /将i作为参数传递 testI(i); /此时直接将IC1的实例作为实参传递给testI testI(new IC1(); /main /Test 7 利用接口 n声明多个类必须实现的方法。 =编程者可以把用于完成特定功能的方法组织成相 对独立的集合体接口。凡是需要实现这种特定功能 的类,都必须实现这个接口。 n利用接口模拟多继承。 =java程序中的类层次结构是树状结构,这种树状 结构在处理某些复杂问题时会显得力不从心。 =接口在保持单继承优点的前提下,使Java程序的 类层次结构更加合理,更符合实际情况。 n只说明对象的编程接口,而不揭示实际的类体。 =类库分发 系统定义的接口 public interface ActionListener extends EventListener public abstract void actionPerformed(ActionEvent e); n该接口代表了监听并处理动作事件的功能,它包 含了一个抽象方法 actionPerformed n所有希望能够处理动作事件(如单击按钮、在文 本框中回车等)的类都必须具有ActionListener接口 定义的功能,也就是要实现这个接口, 内部类(inner class) n在某个类的内部定义的类称之内部类。 n内部类的定义方法 =定义命名的内部类:可以在类中(甚至方法中) 定义内部类,并在类的内部多次使用(创建多个对象 )。 =定义匿名内部类(一次性类):可以在new关键 字后定义内部类,以立即创建一个对象 n内部类的类文件命名方法 设外层类名为Myclass,则该类的内部类名为: Myclass$c1.class (c1 为命名内部类名) Myclass$1.class (表示类中定义的第一个匿名 内部类) 类中的内部类 n在类中如同使用其他类一样使用自己的内部类。 n内部类拥有对在外层类中定义的所有属性和方法 的访问权。 n其他类如果要使用一个类的内部类时,要使用类 前缀。 8-Parcel2 类中的内部类 n一般类只能是public和非public,而内部类可以 指定为 private 和 protected。 n如果内部类为private,只有本类可以使用它。 n如果内部类为protected,只有外层类、与外层类 处于同一包中的类、以及外层类的子类可以访问它 。 n内部类可以实现接口及抽象类中的抽象方法。 n外层类可以将上述实现细节、乃至内部类都隐藏 起来,通过方法的返回值向外界提供一个实现了基 类或接口的实例。 8-Parcel3 在类的外部使用内部类 n如果想在一个类的外部使用该类中声明的内部类的实例 ,需要按照以下方式进行: =构造一个外层类的变量 =通过该变量,用new关键字建立内部类的实例,注意,内部 类的类型应按外层类.内部类的方式进行说明 n例: class A class B class Test public static void main( String args ) A a=new A(); A.B b=a.new B(); /内部类B的类型说明为A.B 方法中的内部类 n内部类还可以定义在一个方法里,其作用域仅限 于该方法的范围内(进一步隐藏),在其它方法里 定义也没有名字冲突问题。 =实现一个接口,方法返回一个该内部类的对象。 =在一编写好的代码中加一个类,但又不想公开化 。 8-Parcel4 条件分支中的内部类 n在条件分支中的内部类并不表示有条件的建立, 同其他类一样,在编译时就一道解决了,内部类只 是限定它的作用域(在条件分支中使用)。 if (e) 类定义 8-Parcel5 匿名内部类 n匿名内部类是在一个类内部定义的,没有名称的一种特 殊的类。 n由于匿名内部类没有名字,它的定义和它的实例必须同 时声明,格式为: new 父类或父接口( 传递给父类构造方法的实参列表 ) 属性定义 方法定义 ; n以上代码在定义匿名内部类的同时,也声明了该内部类 的一个实例 n匿名内部类的实例可用于属性或变量的初始化、方法调 用过程中的实参传递、return语句的返回值等处。 匿名内部类的应用场景 8-Parcel6 n当你想从一个父类派生一个子类;或想用一个类 实现一个接口,而该子类或实现类的实例只使用一 次时,就可以通过将该类声明为匿名内部类,把类 的定义和实例放在一起,从而简化代码。 匿名内部类例 n前面讨论了系统中的这个接口: public interface ActionListener extends EventListener public abstract void actionPerformed(ActionEvent e); n如果我们某个方法只需要返回实现了该接口的类的一个 实例,则可以这样写return语句: /方法中其他代码 return new ActionListener() public void actionPerformed(ActionEvent e) /实现代码 ; 等价的有名内部类 n前面的代码相当于在方法中定义了一个有名内部 类,然后返回该内部类的一个实例。 n对等的有名内部类的代码如下: /方法中其他代码 class ResultClass implements ActionListener public void actionPerformed(ActionEvent e) /实现代码 return new ResultClass(); 枚举 n在JDK1.5之前,Java中定义常量都是通过在类 或接口中声明静态属性 n如果常量有限定的取值范围,比如,扑克牌的花 色只有4种,静态属性自身无法直接对这种取值进 行限定,为此,JDK1.5引入了枚举: 访问修饰符 enum 枚举类型名 枚举常量1, /注意每个常量的分隔符为逗号 枚举常量2, 枚举常量n; /若常量后没有其他成员,分号可省略 枚举类型可用的方法 n枚举类型实际是java.lang.Enum类的子类,该类 中2个常用静态方法如下: =values() 该方法返回对应枚举类型中定义的所有常量构 成的集合,可以使用JDK1.5中引入的新for循环取出 返回的集合中存储的枚举常量。 =valueOf(字符串) 该方法可以将给定的字符串转换为对应的枚举 类型的数据。如果给定的字符串和枚举中定义的常量 名称都对应不上,则该方法会报告错误。 njava.lang.Enum只供Java内部使用,程序员不能 直接定义继承该类的子类 枚举示例 enum Suit spade,diamond,club,heart class TestSuit public static void main(String args) /通过for循环,打印Suit中定义的枚举常量 for(Suit s:Suit.values() System.out.println(s); Scanner reader=new Scanner(System.in); /声明一个枚举类型的变量suit,并从键盘读入枚举值 Suit suit=Suit.valueOf(reader.nextLine(); switch(suit) case spade: /case后必须直接使用枚举中的常量名 /这样的格式是错误的:Suit.spade 枚举示例(续) /* 在switchcase语句之外,使用枚举常量的格式为: 枚举类型名.常量名 可以使用等值运算符(=)判定枚举型变量的值是否等于枚 举中的常量值,或者使用equals方法 */ if(suit.equals(Suit.spade) /等同于if(suit=Suit.spade) /枚举类型不能实例化,枚举变量只能通过枚举常量赋值 suit=Suit.spade; /OK suit=new Suit(); /Error 枚举构造方法 n枚举类型不能用new进行实例化,枚举类型的变 量取值必须为该枚举类型中声明的常量 n枚举中还可声明其他类型的数据成员。枚举的构 造方法主要用于声明枚举常量时,对枚举类型中的 其他数据成员进行赋值。 n例: enum TrafficLight /声明枚举常量,同时提供构造方法实际参数 Red(30),Amber(10),Green(40); /注意此处要用分号 private final int duration; /枚举的私有成员 /枚举的构造方法 TrafficLight(int duration)this.duration=duration; 枚举中的抽象方法 n枚举中也可以定义其他方法,甚至可以定义抽象 方法。 n定义了抽象方法后,必须在声明每一个枚举常量 的同时,利用类似匿名内部类的形式,对抽象的方 法加以实现,具体格式如下: 枚举常量1(构造方法的实参) 抽象方法的具体实现 , 枚举常量2(构造方法的实参) 抽象方法的具体实现 , 枚举抽象方法实现示例 enum TrafficLight /每个枚举常量必须都要提供抽象方法的实现 Red(30) TrafficLight next() return Green; , Amber(10) TrafficLight next() return Red; , Green(40) TrafficLight next() return Amber; ; private final int duration; /枚举的私有成员 TrafficLight(int duration)this.duration=duration; int getDuration()return duration; /普通方法 abstract TrafficLight next(); /抽象方法 枚举抽象方法实现示例 class Test public static void main(String args) TrafficLight light=TrafficLight.Red; int duration=light.getduration(); /调用普通的枚举方法 light=light.next(); /调用枚举中实现的抽象方法 /* ordinal方法继承自Enum,返回值为该枚举常量在枚 举中的定义次序(第一个枚举常量的次序为0,其余在 此基础上递增) */ int ord=light.ordinal(); 9 附录 NetBeans中对面向对象编程的支持功能 利用NetBeans的包向导创建包 在NetBeans的工程 视图中,选中 Source Pakages下面 的default package, 点击右键,选择 New-Java Package 菜单会弹出包向导 对话框 输入包名,NetBeans会自动 创建对应的目录。 利用NetBeans的类生成向导创建包 除去利用包向导 可以创建包之外 ,利用类向导创 建类时,在 Package框中输入 类所在的包名, NetBeans也会自 动建立包名对应 的目录 在NetBeans中更改包名 由于NetBeans会创建包名对应的 目录,更改包名时,也要同时修 改对应的目录的名称。为此,可 在工程视图中选中要更改的包名 ,单击或按F2键,输入新包名后 回车,NetBeans会弹出改名的对 话框 点击Refactor按钮 ,就可同时修改 包名和对应的目 录名称。 在NetBeans中更改类所在的包 更改类所在的包时,不要直接 pacakge语句中的包名。如果要 更改成的新包名在工程视图中 还没有出现,请先在源文件编 辑器中点击包名,然后右键调 出Refactor-Rename菜单,在 改名对话中输入新包名即可。 在NetBeans中更改类所在的包 如果在工程视图中,要更改成 的包名已经存在,请在工程视 图中选中要更改包名的类,然 后用鼠标左键把它拖动到目标 的包中即可。 注意:此时不要通过点击源文 件中的包名,选右键菜单中的 Refector-Rename修改类所在 的包名,这样做NetBeans会提 示“包名已存在”的错误。 NetBeans对import语句的支持 在定义数据时,如果NetBeans找不到我们声明的类型,它会 在代码编辑器的对应行的左侧提示一个灯泡的图标,点击该 图标,NetBeans会提示我们该类型可在那些包中找到,选择 对应的项目,即可生成相应的import语句。 Fix Imports右键菜单 在编辑器中点右键 ,选择Fix Imports 菜单,弹出的Fix All Imports对话框 也可帮助我们生成 import语句 NetBeans中对jar文件的支持 nNetBeans的工程均可生成jar文件。点击NetBeans 工具栏中的build按钮,即可生成以当前主工程为名的 jar文件,该jar文件位于工程的dist目录中。 n如果该工程包含可运行的主类,还可以直接在命令 行窗口中使用如下指令直接运行该文件: java jar jar文件全名 点击NetBeans的工程属性 对话框左侧的Run节点, 就可以指定生成的jar文件 在执行时的主类文件 在NetBeans工程引用jar文件 n如果在NetBeans工程中要引用某个jar文件作为 类库,需要在工程视图的libraries节点上点右键, 选择“add JAR/Folder“菜单,在弹出的文件选择 对话框中选择需要引用的jar文件即可。 注意: NetBeans在编译和运行工程 时,在默认设定下,除去在 当前工程的Library节点中设 定的jar文件或文件夹中寻找 需要的类文件之外,它还会 在控制面板-系统对话框中 设定的classpath环境变量中 寻找需要的类和jar文件。 NetBeans的工程属性对话框 n除去在工程视图的Library节点可以指定编译和运 行当前项目所需要的jar文件之外,在NetBeans的 工程属性对话框中也可以指定工程所需的jar文件和 类文件所在的文件夹。 点击Libraries节点,就可以为当 前工程指定编译和运行时需要 的jar文件 该复选框指定了在编译时要 在classpath环境变量中寻找 jar或类文件 NetBeans的库(Library)管理 n为了让编程人员更方便地在工程中引用jar文件, NetBeans还提供了对jar文件的管理机制,这就是“ 库”(Library)的概念 n库是指一个或多个jar文件的组合,可以在 NetBeans中先建一个库,然后把几个jar文件加入 这个库中,以后,需要为工程添加jar文件时,就可 以不用一个一个添加对应的jar文件,只需要添加一 个库就可以了,这在jar文件位于不同的目录中时非 常方便。 NetBeans中的库(Library)管理 n在工程视图的Libraries节点上点右键,就可以看 到“Libraries“菜单;在工程属性对话框中,点击 Libraries节点,也可以看到“Add Libraries“按钮。按 下图的次序依次点击,就可建立jar的管理库。 1 2 3 4 5 点击New Library,输入库名称, 确认后再点击Add JAR/Folder,就 可为当前的库加入jar文件 NetBeans对Setter/Getter方法的支持 在编辑器中点击右键,选Refactor- Encapsulate Fields菜单,就可调出生成 Setter/Getter方法对的对话框 选中这些复选框, 即可生成对应属性 的Setter/Getter方法 NetBeans对接口实现的帮助 在编辑器中,书写类定义时,用implements实现了一个 接口后,编辑器的左侧会出现一个灯泡型的图标,点 击该图标,就可生成接口中需要实现的方法。 上机作业5 n实现如下位于包school中的两个具有继承关系的Public 类:Student、ClassStudent(其中除了className外, 其余属性为private,方法为public) n在类Test中,使用这两个类输出如下信息,并统计输出 其中最高分、最低分和平均分。 属性: name no 方法: setName,getName setNo,getNo StudentClassStudent 属性: static className grade 方法: setClassName, getClassName setGrade,getGrade 姓名学号课程成绩 王刚1009Java87 刘林林1076Java90 石磊1054Java62 上机作业6 n定义一个接口图形,其中有两个方法面积(), 周长(); n在分别定义三个类:三角形、正方形、圆形,继 承自接口图形,并实现面积(),周长(); n然后测试这些类的这些方法。

    注意事项

    本文(第6章面向对象程序设计基础(下).ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开