第5章 Java 语言中的对象、类和方法

单词和缩写

  OOP(Object-oriented Programing)

  object data method class extends interface prototype packge

  public private protected static final native

 abstract this super

5.1 面向对象(Object)(P79)

名称

说明

举例

对象

object

类中的实例,

对象的源代码

把数据、变量、操作和方法

封装在一起。

小车是汽车类中的实例。

class myclass
  {
    myclass myobject;

    myobject=new myclass(int x);
   }

class

定义对象的状态和行为的模板,

Java 语言中的程序模块。

java 语言 awt 工具包中的

Graphics 图形类。

5.1.1 什么是面向对象(P80)

  构成 行为
物体 属性 方式
汽车 发动机、车轮 发动、行驶
对象 数据 方法

5.2 Java 语言中的类

5.2.1  class 类

 1.类的声明格式(P82)

   [类修饰符] class 新类名 [extends 超类名] [implement 接口名]

 2.类修饰符

   public 公有成员,可以被任何对象使用或扩展。

   protected 保护成员,仅能被该类及其派生类访问。

   private 私有成员,仅能被该类的其他成员访问。

   abstract 未完成的类,只是声明方法,而不实现方法。

   final 终类,完整的,不能有子类。

 3.超类

  扩展超类:得取该类的副本,可在副本上添加其他功能。

 [示例 5.3]

    abstract class myClass1            //定义抽象类

    {

    abstract void method1();  //定义抽象方法

   }

   class myClass2 extends myClass1{

       public void method1(){

       ......;

   }

   }

 1. 封装

  1)封装(encapsulation)是把类的数据、变量、操作和方法

    封装在类体中,使之与外界分隔开。

  2)外界访问类对象:

    通过类中公共的数据方法访问私有的数据和方法。

5.2.2 子类(P84)

 1. 类的继承

  1)类的继承(extends)

    新的类继承原有类的基本特性。

  2)新的类:子类、派生类。

  3)原有类:父类、超类(superclass)、基类。

 2. Java 语言在运行时的多态性(P85)

  1)类的多态性(polymophism)

    一个名称有多种功能,或者相同的接口有多种实现方法。

  2)类的多态性的实现

    通过方法的重载(overloading)、复盖(overriding)

    和接口来实现。

  3)方法的重载

    多个方法具有相同的名称,但各个方法的参数表不同,

    即参数的类型和参数的数量不同。

  例如,求一个数的立方(cube)

    int cube (int i);

    float cube (float a);

    double cube (double d);

    调用时系统自选方法。

  例如,cube(5),cube(3.2f),cube(6.7)。

  4)复盖:子类中的方法复盖父类中同名的方法。

  5)接口:特殊的类,只有方法的原型,

    方法的实现在其子类中具体定义。

5.2.5 定义构造函数(P88)

  构造函数:为类提供初始化的方法。

 [示例 5.10]

 class point{

     int x,y;   // 声明变量

     point(){   //构造函数

        x=0;

        y=0;

     }

    point(int newx,int newy){  // point 方法的重载

        x=newx;

        y=newy;

    }

  }

5.3 创建、使用对象

5.3.1 声明和创建对象(P89)

  创建对象语法格式:

  类名  对象名;   //声明对象

  对象名=new 类名(); //创建对象

 [示例 5.12]

  class myClass1{

     myClass myObject;

     myObject=new myClass(int x,int y);  // 分配空间,实例化

   }

5.3.2 对象的初始化(P90)

  若类成员未赋值,则系统赋予固定的初始值。

  数值变量:0

  布尔变量:false

  未初始化的引用:null

 [示例 5.18]

  Point p1=new Point();   //初始化为 x=0,y=0

  Point p2=new Point(5,10);   //初始化为 x=5,y=10

5.3.3 对象的使用(P93)

 运算符“.”可以访问变量和调用方法。

 [示例 5.19]

  class Point {    // 声明 Point 类

    int x,y;

    String name="a point";

    Point(int x,int y, String name){  // 定义方法

       this.x=x;     // 用运算符“.”访问变量

       this.y=y;

       this.name=name;

     }

   }

 // Point 类的应用

  public class AccessVariable{     //声明 AccessVariable 类

  Point p=new Point();              //生成类 Point 的对象 p

  p.x=10;                           //用 p.x,p.y 来访问 x,y

  p.y=10;

  tx=new point().x;         //用 new 生成对象的引用后直接访问

  }

5.4 类和对象

 类是定义对象的状态和行为的模板,对象是类的实例。

5.5 Java 语言中的方法

5.5.1 方法的定义(P96)

  方法:可以被调用的代码,传递固定数量的参数,

 类似 C 语言的函数。

  方法声明格式:

  方法修饰符 结果类型 方法名([参数列表]){方法体}throws子句

 [示例 5.24]

  class point{

     int i;

     float x,y;

     void add_x+y(){     // 定义 x+y 的方法

     for(i=1;i<10;i++)x=x+y;

     ......;

    }

  }

5.5.2 构造方法(P98)

 [示例 5.27]

  class point{

     int x,y;

     point(){

        x=0;

        y=0;

   }

 point(int x,int y){

        this.x=x;

        this.y=y;

   }

  }

5.5.3 finalize 方法(P99)

  finalize 方法终结扫尾,释放系统资源。

5.6 this 和 super 变量(P101)

  this 变量:当前的对象。

  super 变量:引用超类(父类)中的对象。

  1.static方法:类方法(class method),

    Math 类中含有数学计算方法:指数、对数、三角函数。

 2.向方法传递信息

    public static long max(long a,long b){

        return (a>=b) ? a : b;

     }

  例

   class Circle {

    int x,y,radius;  //成员变量x,y

    public Circle(int x,int y,int radius)  //构造器参数x,y

    {

      this.x=x;   //赋值给当前对象的变量x

      this.y=y;

      this.radius=radius;

     }

   }

 3.main方法

  main方法:程序执行的起点。

  定义格式:public static void main(String args[]){方法体}

 

第6章 Java 中的接口、包、异常和Java 程序框架

  接口(interface):抽象方法和变量的集合。

 类的原型(prototype),接口规划出类的共同行为,

 具体类实现特殊功能。

 包(package):由一组类和接口的程序段组成。

6.1 接口的概念(P105)

  应用程序接口 API(Application Program Interface):

 由类和接口组成具备各种功能的类的形式。

  例如:java.applet.AppletContext接口的getImage方法

      使运行Applet的浏览器下载图片。

6.1.1 接口类型

 接口中的数据成员:

 公共的(public)、静态的(static)、最终的(final)。

(1)声明接口的语法格式

  public interface 接口名[extends 接口列表]{...;}

6.1.2 接口的实现(implements)(P106)

(1)类实现接口的语法格式:

   class myclass implements SomeInterface{...}

(2)多个接口的实现(声明用逗号分隔接口)

   class myclass implements Interface1,Interface2{...}

(3)接口的多重继承

   Interface myInterface extends Interface1,Interface2{...}

6.2 Java 包(P109)

  包:类似 C++ 语言中的类库,用途相近功能不同的类和接口的集合。

相当子目录,包与文件系统的目录对应,用圆点(.)指明目录的层次。

  例如:java.awt.Graphics

6.2.1 java 核心包(P110)

  API(Application Programming Interface)

(1)java.lang 基本包:支持基本对象和数值类型。

(2)java.io 输入输出包:用于管理文件输入输出流。

(3)java.util 工具包:提供工具类。

(4)java.net  网络包:支持网络编程。

6.2.1 java 语言提供的其他包

(1)java.awt 抽象窗口工具包:

   用于管理窗口、对话框、按钮、菜单、滚动条等。

(2)java.applet 小程序包:用于创建 Java 小程序。

(3)javax.swing 新图形界面库:新的图形界面类库。

6.2.3 构造 Java 包

  package 包的名称;

6.2.4 引入包中的类和接口(P111)

  例如:

    import java.awt.color;

    import java.awt.Graphics;

    import java.awt.Image;

    import java.awt.*;

  导入整个包,浏览器必须从网上下载包中的所有类文件,用时间多。

6.3 异常(P113)

单词和缩写

  try-catch throw Exception Error

  异常(exception):程序执行出错。

  抛出(throwing an exception):

  Java语言中,异常是对象,它可以抛出给程序异常处理段,

    程序捕捉(catch)异常后,为该异常执行异常处理代码。

6.3.1 异常的捕捉处理

  [例]调用方法失败,发生异常

     try      // 试验可能产生异常的代码块

     {

        system.in.read(buffer,0,255);

      //read( )方法执行成功,则跳过catch( )块

      }

      //read( )方法执行不成功,

      //则抛出异常,执行catch( )块中的异常处理

      catch(IOException e)

      {

        String err=e.toString(); //处理异常的代码

        system.out.println(err);

       }

6.3.2 抛出异常(P117)

  throw 语句:抛出异常,使程序转向执行catch( )块中的异常处理

  throw new Exception ("string");

  Exception 异常类的构造器

  public Exception()

  public Exception(string s)

6.4 Java 语言标准应用程序框架(P120)

 * 应用程序(Application):

   在 Java 虚拟机上运行,控制整个窗口,受限制少,

要有程序入口 Main()。

 * Java 小程序(Applet Application -let):

   在 IE 浏览器上运行,插入网页,受限制多,不要程序入口 Main()。

6.4.1 Java Application 应用程序框架

  Java 应用程序:myApplication.java

  package mypackage;

  import somepackage.*;

  public class myApplication{

     public static void main(String args[]){

        ...;

     }

  }

 * String args[]:传递给 main() 方法的参数,

   参数 args 是类 String 的数组。

6.4.2 Applet 小程序框架(P121)

 * Applet 小程序运行过程

init( )
初始化

———

start( )
 启动

————

stop( )
 停止

———

destory( )
 释放资源

————

(1)加载含 Applet 的页面,设置字体、装载图片等;

(2)启动或恢复执行;

(3)执行被挂起,浏览器调用 stop() 方法停止小程序的运行;

(4)若关闭浏览器停止 Applet 运行,

浏览器调用 destory() 方法终止小程序。

(5)调用 paint() 方法绘制图形。

 * HTML 文件嵌入 Applet 小程序(P123)

   <BODY>

      <APPLET

         CODEBASE="."            // 路径

         CODE    ="ZXB.class"    // 正弦波类文件

         ......

      <PARAM NAME="Width" VALUE="400"  // 宽的参数

      </APPLET>

   </BODY>

 

习题 6 (P124)

6.12 在 Visual J++ 环境中构造 Java Application 应用程序和

  Applet 小程序框架,要求有班级、学号、姓名。(P121 P125 P251)

 

第7章 Java 语言的输入输出操作

 * 文件输入输出(I/O)流:

   信息源和目的地之间的通信路径。

 * 文件输入流对应抽象基类 InputStream;

 * 文件输出流对应抽象基类 OutputStream。

 

第8章 Java 语言的GUI和事件处理

单词和缩写

  GUI(Graphic User Interface)

  Components Containers Layouts

  Frame Panel Button Label event

 DSN(Data Sequence Number)

8.1 GUI 图形用户界面(P143)

 * 图形用户界面基本元件(组件)

   应用程序框架(Frame)   面板(Panel)

   按钮(Button)          标签(Label)

   画板(Canvas)          滚动条(Scrollbar)

   列表框(List)             文本域(Text Field)

   文本区(Text Area)     菜单(Menu)

 * 控制组件的基本使用

   激活组件(action)     禁用组件(disable)

   启用组件(enable)     处理事件(handleEvent)

   隐藏组件(hide)       当前坐标(location)

   单击鼠标(mouseDown)  拖动鼠标(mouseDrag)

   移动组件(move)       重置组件(repaint)

   重置尺寸(resize)     组件背景色(setBackground)

   设置字型(setFont)    组件前景色(setForeground)

   显示组件(show)

8.1.1 应用程序框架

 1.应用程序(Application):

    框架(Frame):带标题的顶层窗口。

  Frame 类构造方法:

  Frame(String title)  // 给定窗口标题

  显示框架窗口:使用 Frame 类的父类 Windows 类中的show()方法。

[实例 8.1]

 package frameshow;

  import java.awt.*;

  public class myFrame extends Frame{ 

  // 创建继承 Frame 的窗口类

    public myFrame(){   // 定义方法

    }

    public static void main(String[] args){

      myFrame myFrame = new myFrame(); // 实例化一个窗口

      myFrame.setSize(777,555);

      myFrame.show();

    }

  }

 2.在 VJ++6.0 环境中创建源程序:

   Applications 应用程序:编译生成 .exe 文件,

   运行时有独立的窗口,使用 Form1 模板中的关闭窗口方法。(P178)

  public boolean handleEvent(Event e){ 

  switch(e.id){

  case Event.WINDOW_DESTROY:System.exit(0);return true;

  default:return false;

   }

  }

   例如:正弦波 F:\JAVA\jv_zxb.java

    File--New project--Applications 文件夹的

  Windows Application—工程名jv_zxb,路径F:\JAVA—打开—

   Project Explorer 窗口:Form1.java 改 jv_zxb.java—

   打开jv_zxb.java—编辑源程序—Build菜单—Build—

  指定主类 'Form1' 未发现;

  debug 菜单—Start winthout debugging --launch 启动卡—

  选取自定义选项 costom—编译生成类文件(.class)—

  调试 Debug--Start--生成 .exe 文件。

8.1.2 面板(P146)

 1.面板(Panel):构成 Java 小程序(Applet)主窗口。

 2.Java 小程序实例 zxb.htm 代码 zxb_dm.htm

 3.在 VJ++6.0 环境中创建 Applet 小程序

  Applet 小程序:编译生成 .class 文件,插入网页中,

  浏览时包含在浏览器窗口中。

   例如:正弦波 F:\JAVA\zxb.java

     File--New project--Web Page 文件夹的 Applet on HTML—

   工程名zxb.java,路径F:\JAVA—打开—

   Project Explorer 窗口:Applet1.java 改 zxb.java—

   打开zxb.java—编辑源程序—Build菜单—Build—

  编译生成类文件(.class)—调试Debug--Start--

   浏览器窗口Page1.htm—查看—源文件—Applet1.class改zxb.class。

8.1.10 菜单(P151)

菜单(Menu)

菜单栏(MenuBar)

主菜单(Menu)

 

文件

 

图形

 

帮助

子菜单(MenuItem) 新建

打开

保存

关闭

退出

时钟

彩条

正弦

花叶

 

 * 设置窗口菜单

  创建窗口框架—创建菜单栏—创建主菜单—创建子菜单—

  子菜单添加到—主菜单添加到—菜单栏添加到—窗口框架—

  显示窗口框架。

 

[示例 8.8]

  Frame myFrame =new Frame("my Frame");     //创建窗口框架

  MenuBar MenuBar = new MenuBar();              //创建菜单栏

  Menu myMenu = new myMenu("文件");             //创建主菜单

  MenuItem myMenuItem = new myMenuItem("打开"); //创建子菜单

 

  myMenu.add(myMenuItem);                 // 把子菜单添加到主菜单

  MenuBar.add(myMenu);                       // 把主菜单添加到菜单栏

  myFrame.setMenuBar(MenuBar);       // 把菜单栏添加到窗口框架

8.1.12 各种 AWT 组件实例(P153)

 1.设置窗口菜单

   子菜单—主菜单—菜单栏—窗口框架。

 2.设置窗口面板

   按钮—面板—窗口框架。

 [实例 8.4] Java 菜单 jvcd.exe,代码 jvcd_dm.htm

8.2 事件的处理

  事件(event)处理(P155)

  事件源(source)和事件监听(listeners)之间的交互。

8.2.3 典型组件事件处理

 5.菜单事件(P162)

 [实例 8.7] 菜单事件应用程序

 实现菜单退出事件:

 定义退出子菜单项—监听菜单事件—调用处理程序—处理菜单事件。

  Java 菜单 jvcd.exe,代码 jvcd_dm.htm

   MenuItem MenuFileExit = new MenuItem();      // 定义退出子菜单项

   MenuFileExit.addActionListener

   (new java.awt.event.ActionListener(){

   public void actionPerformed(ActionEvent e){  //监听菜单事件

   MenuFileExit_actionPerformed(e);             //调用处理程序

      }

    });

   void MenuFileExit_actionPerformed(ActionEvent e){

   System.exit(0);                              //处理菜单事件

   }

 

习题 8 (P165)

8.3 编写 Windows 应用程序框架,

  包括文件(打开)、编辑(复制)等菜单项。(P153)

8.4 编写文件(退出)的菜单事件应用程序,包括定义菜单项,

  监听菜单事件,调用处理菜单事件的程序,处理菜单事件。(P162)