JAVA程序设计 (03) JAVA Programming

Slides:



Advertisements
Similar presentations
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Advertisements

Java 大学实用教程 ( 第 3 版 ) 主讲:程继洪 第 1 章 Java 语言概述  本章导读 Java 语言的诞生Java 语言的诞生 学习 Java 的必要性 学习 Java 的必要性 Java 的特点及与 C/C++ 之关系Java 的特点及与 C/C++ 之关系.
第五章 类的继承和派生 Inheritance/extends/derive. 教学目标 理解继承的概念和作用 派生类的定义 理解访问修饰符 protected 方法的重写 继承下的构造函数的使用 继承下的 finalize 方法的使用 理解超类和子类的关系.
Java 程序分类 Java Application :是完整程序,需要独立的解 释器解释运行;以 “.java” 为后缀的文件,以 main() 方法作为程序入口,由 java 编译器编译生 成字节码,由 Java 解释器加载执行字节码。 Java Applet 没有 main() 方法作为程序入口,是嵌在.
第一章 Java 程序设计技术 概述  什么是 Java 语言  一个简单的 Java 程序  程序的编译和运行  常见错误  使用 Java 核心 API 文档.
Java 程序设计 案例教程 北京大学出版社 第 01 章. Java 程序设计案例教程 第 01 章 Java 语言与面向对象程序设计 Java 语言的历史 Java 语言的特点 Java 程序的分类 Java 环境配置 Eclipse 的安装 Java 程序的调试 教学目标.
Java 程序设计(第二版) 普通高等教育 “ 十一五 ” 国家级规划教材 辛运帷等 编著 徐小平 主讲.
系統分析與設計 楊子青 H-1 H 、物件導向技術 n 物件導向的基本概念 – 物件、類別 – 封裝、繼承 – 同名異式 ( 多型 ) 、超荷 ( 過載 ) n 物件導向分析與設計及塑模工具 n UML 塑模工具.
第三讲 Java与面向对象技术 1、面向对象的概念 2、Java中的类、方法和变量 3、Java名字空间及访问规则
第四章 类、对象和接口.
1.1 有关面向对象的概念 变量:即指对象的所知道的状态 方法:指对象的功能单元。 什么是消息? 软件对象通过相互间传递消息来相互作用和通信
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
JAVA 编 程 技 术 主编 贾振华 2010年1月.
第 9 章 物件的建構.
《 Java开发环境配置》 主讲人:耿力.
Java 2实用教程(第3版)教学课件 主讲教师:张国平
Java程序设计教程 第一讲 Java概述.
Java的程式架構與基本觀念 Java語言的歷史 Java程式的開發環境 Java程式的架構 輸出與輸入物件之使用 工具使用方法介紹
四資二甲 第三週作業 物件導向程式設計.
第4章 类与对象 本章导读 0. 面向对象编程 1. 类声明和类体 2. 类体的构成 3. 构造方法与对象的创建 4. 对象的引用与实体
第一章 面向对象程序设计.
程設一.
第二章 JAVA语言基础.
類別的繼承-一般關係: 繼承是宣告的類別繼承現存類別的部份或全部的成員資料和方法 , 新增額外的成員資料和方法或覆寫和隱藏繼承類別的方法
Ch07 介面與多重繼承 物件導向程式設計(II).
第5章 进一步讨论对象和类.
第5章 Java中类、对象、接口 及包的概念 5.1 类的基本概念 5.2 类的继承概念 5.3 抽象类和接口 5.4 包.
程設一.
Ch08 巢狀類別 物件導向程式設計(II).
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
H、物件導向技術 物件導向的基本概念 物件、類別 封裝、繼承 同名異式(多型) 、超荷(過載) 物件導向分析與設計及塑模工具 UML塑模工具.
物件導向程式設計 (Object-Oriented rogramming)
2018/11/20 第一章 Java概述 武汉大学计算机学院计算机应用系 2018/11/20 14:33.
Classes Lecturer: 曾學文.
CHAPTER 9 建構方法 ROBERT.
第六章 类的扩展与继承.
Ch10 類別與物件-方法 Java程式設計(2).
程式設計實作.
CH09 套件 物件導向程式設計(II).
Java软件设计基础 5. 继承与多态.
Java程序设计 第9章 继承和多态.
Java基础入门 第1章 Java开发入门 · Java语言的特点 · Java开发环境的搭建 · 环境变量的配置 · Java的运行机制.
類別的繼承 Vehicle Car.
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
辅导课程九.
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
2019/1/16 Java语言程序设计-类与对象 教师:段鹏飞.
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
第16章 虛擬與多形 16-1 虛擬函數 16-2 純虛擬函數與抽象類別 16-3 多形 16-4 虛擬繼承與虛擬解構子.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
《JAVA程序设计》 语音答疑 辅导老师:高旻.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
Interfaces and Packages
第二章 Java语法基础.
辅导课程十一.
第二章 Java基本语法 讲师:复凡.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
第6章 面向对象的高级特征 学习目标 本章要点 上机练习 习 题.
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第6章 继承和多态 伍孝金
Summary
Presentation transcript:

JAVA程序设计 (03) JAVA Programming 湖南大学软件学院 主讲:荣辉桂 Email ronghg@163.com

1.8 Java名字空间及访问规则 每个类都创造了有自己的名字空间,指方法和变量可以知道彼此的存在,可以使用。 abstract类不能直接产生属于这个类的对象 final类不能被其他任何类所继承(安全的考虑) public类不但可以被同一程序包中的其它类使用,别的程序包中的类也可以使用. friendly(缺省)类只能被本包中的其它类使用

1.8 Java名空间及访问规则 变量和方法的修饰字public、protected、private class ABC { public int pub_i=5; public void show)() { System.out.println (“pub_i”+pub_i); }

1.8 Java名空间及访问规则 class Demo { public static void main(String args[]) { ABC abc=new ABC(); System.out.println(“abc.pub_i”+abc.pub_i); abc.pub_i=10; abc.show(); } abc.pub_i=5 pub_i=10;

1.8 Java名空间及访问规则 protected变量和方法 public class ABC { protected int pro_i=5; protected void show() { System.out.println (“pro_i=” +pro_i;) }

1.8 Java名空间及访问规则 不同包中的类不能使用 class DEF { public static void main(String args[]) { ABC abc=new ABC(); System.out.println (“abc.pro_i=“+abc.pro_i); abc.pub_i=10; abc.show(); }

1.8 Java名空间及访问规则 不同包但是是子类 import mytest.pack.ABC; class DEF extends ABC { public static void main(String agrs[]) { DEF def=new DEF(); System.out.println(def.pro_i); def.pro_i=10; def.show(); } } pro_i=5 pro_i=10

1.8 Java名空间及访问规则 private 不允许任何其他类存取和调用 friendly(前边没有修饰字的情况) 在同一程序包中出现的类才可以直接使用它的数据和方法.

1.8 Java名空间及访问规则 当子类中的变量名与父类的相同,原来的变量被遮盖. class demo { public static void main(String args[]) { C c=new C(); c.print_out(); }} class A { static int data_a=3;} class B extends A {static int data_a=5;} class C extends B { void print_out() { System.out.println(“data_a= ”+data_a); System.out.println(“A.data_a= ”+A.data_a); System.out.println(“B.data_a= ”+B.data_a); }} data_a=5 A.data_a=3 B.data_a=5

1.8 Java名空间及访问规则 方法的覆盖(overriding)和重载(overloading) 子孙类中定义的方法和祖先类中某个方法同名,同参数行,则祖先类中的该方法被覆盖. 方法的重载是指一个对象的多态性,即多个方法用相同的名称,但参数行不同. void show(int int_num) 123 1.23 void show(double double_num) 类 123,1.23 void show(nit nit_ um, float float_um)

1.8 Java名空间及访问规则 到此为止-----final final在方法之前,防止该方法被覆盖. 属于类的变量和方法----static static 在变量或方法之前, 表明它们是属于类的, object a char data object c Object b static int share_data object d class ABCD { char data; static int_share_data; } class Demo { ABCD a,b,c,d}

1.8 Java名空间及访问规则 静态变量在各实例间共享 如果是public静态变量,则其它类可以不通过实例化访问它们 静态方法称为类的方法,因此不用实例化即可调用(面向过程) 一个对象的方法可以访问对象的数据成员,尽管不属于方法的局部变量 一个类的方法只能访问自己的局部变量 例子,请指出下例的输出结果

1.8 Java名空间及访问规则 例:不正确的引用 class StaticError { String mystring=“hello”; public static void main(String args[]) { System.out.println(mystring);} } 错误信息:can’t make a static reference to nonstatic variable. 为什么不正确? 只有对象的方法可以访问对象的变量.

1.8 Java名空间及访问规则 解决的办法: 1. 将变量改成类变量 class StaticError { static String mystring=“hello”; public static void main(String args[]) { System.out.println(mystring);} }

1.8 Java名空间及访问规则 2. 先创建一个类的实例 class NoStaticError { public static void main(String args[]) String mystring=“hello”; System.out.println(mystring); }

1.9 Java中抽象类、接口和程序包 抽象类是指不能直接被实例化的类,因此一般作为其它类的超类,与final类正好相反 抽象类中的抽象的方法-在该类中定义但不在该类中提供实现,由继承类提供细节 public abstract class Myclass { void method1() { System.out.println(“Hi, Java”);} abstract void method2(); //定义抽象方法 } 定义抽象方法的类必须是抽象类. 如果抽象类的子类不为抽象类,则子类必须实现父类所有的抽象方法。

1.9 Java中抽象类、接口和程序包 引入抽象类的目的是更好地进行系统抽象。例如,不同类中都有一个同名的方法,但各自的实现方法不一样,那么可以在它们的父类中声明一个抽象方法,具体实现由子类进行。 当A2为A1的子类时(或者说A2继承A1类),我们可以用A1类来定义对象a1,用类A2的构造方法对起进行初始化。 抽象类应用:有两个类Circle和Rectangle,完成相关参数的计算。

1.9 Java中抽象类、接口和程序包 class Circle { public int r; Circle(int r) {this.r=r} //this指"这个对象的" public int area() {return 3*r*r; } //取近似 } class Rectange { public int width,height; //这里不需"this" Rectangle (int w, int h) {width=w,height=h;} public int area() {return width*height; }

1.9 Java抽象类,接口和程序包 假设有若干个Circle,以及若干个Rectangle,希望计算它们的总面积,直截了当的做法是将它们分别放到两个数组中,用两个循环,加上一个加法,这种做法是不漂亮的 如果还有其它形状,triangle,ellipses等,上述方法显得“累赘”,我们希望有一种统一的表示,例如用一个数组shape[],接受所有的形状,然后用 相关源码 for (i=0;i<shape.length;i++) { area_total+=shape[i].area(); }

1.9 Java中的抽象、接口和程序包 abstract class Shape { abstract float area(); } class Circle extends Shape { public int r; Circle(int r) {this.r=r;} public float area() { return 3.14*r*r; } } class Square extends Shape { public int width,height; Rectangle (int w, int h){ width=w,height=h;} public float area() {return width*height; } 1.9 Java中的抽象、接口和程序包

1.9 Java抽象类、接口和程序包 interface Stack 利用接口可实现多重 继承(可同时实现多个接口) { void push(object x); object pop();} 利用接口可实现多重 继承(可同时实现多个接口) 接口的作用和抽象类 类似,指定原型,不直 接定义方法的内容. 关键字implements用来实现方法,即在使用时要用给出方法的实际内容 接口中方法和变量是public的,所以可以省略。 class A extends Applet implements Stack { void push(object x) { …;//具体内容 } object pop() …;//具体内容}

1.9 Java抽象类、接口和程序包 程序包:相当于其它语言中的库函数 打包 package Graphics; class Square {…;} class Circle {…;} class Triangle {…;} 使用程序包中的类要用import命令.表示路径,*表示使用包中的所有类 import java.io.FileInputStream; import java.io.*; io java FileInputStream

1.9 Java抽象类、接口和程序包 通过关键字package声明包语句。package 语句作为Java源文件的第一条语句,指明该源文件定义的类所在的包。package语句的一般格式为: package 包名 ; 如果源程序中省略了package语句,源文件中所定义命名的类被隐含地认为是无名包的一部分,即源文件中定义命名的类在同一个包中,但该包没有名字。 包名可以是一个合法的标识符,也可以是若干个标识符加“.”分割而成,如: package sunrise; package sun.com.cn;

1.9 Java抽象类、接口和程序包 程序如果使用了包语句,那么你的目录结构必须包含有如下的结构 …\tom\jiafei (… 代表特定的目录) 例如:package tom.jiafei; 比如有如下目录结构: c:\1000 \tom\jiafei。包结构生成有两种模式: 《将源文件编译后得到的全部字节码文件拷贝到目录c:\1000\tom\jiafei中,如果你事先将源文件保存到c:\1000\tom\jiafei中,那么直接编译源文件,生成的字节码文件就直接保存到当前目录中了; 如:c:\1000\tom\jiafei\javac 文件名.Java ; 可以直接采-d 编译参数,将编译的字节码文件拷贝相应的目录结构中;比如:  c:\1000\javac –d .C:\tom.java(将自动创建目录结构) 我们将下述例子10的源文件保存到c:\1000\tom\jiafei。

然后编译原文件: c:\1000\Tom\jiafei\javac Example.java 运行程序::c:\1000\java Tom.jiafei. Example ; 也可以将包所在的目录些入CLASSPATH中,那么就可以在任意位置:java Tom.jiafei.Example 了。 因为起了包名,类Example的全名已经是:T om.jiafei.Example(就好比大连的全名是:“中国.辽宁.大连”)。 包名应该避免与其他包名冲突。但要做到这一点似乎很困难,如果你的包需要在全世界是唯一的,Sun公司 建议大家使用自己所在公司的Internet域名倒置后做包名,例如,将域名“sina.com.cn”的倒置“cn.com.sina”做包名。

1.10 对象的构造函数 Constructor(构造方法)和finalizer(撤销对象的方法) class Point { int x,y; Point() { x =0;y=0;} Point(int new_x,int new_y) { x=new_x,y=new_y;} } class UsePoint { Point point_A=new Point(); Point point_B=new Point(5,7); }

1.10 对象的构造函数 构造函数应包含哪些内容? 构造函数多半定义一些初值或内存配置工作 1.10 对象的构造函数 构造函数应包含哪些内容? 构造函数多半定义一些初值或内存配置工作 一个类可以有多个构造函数(重载),根据参数的不同决定执行哪一个. 如果程序中没有定义构造函数,则创造实例时使用的是缺省函数,它是一个无内容的空函数.

1.10 对象的构造函数 this this指自己这个对象 this的作用是要将自己这个对象当作参数,传送给别的对象中的方法. class Circle { int r; Circle(int r) {this.r=r;} public area() { return r*r*3;} } class ThisClass { public static void main() { Bank bank=new Bank(); bank.someMethod(this); }

1.10 对象的构造函数 super指这个对象的父类 super用来引用父类中的方法及变量数据. 1.10 对象的构造函数 super指这个对象的父类 super用来引用父类中的方法及变量数据. public class apple extends fruits { public apple(int price) { super(price); } } 以上句子表示使用超类的构造函数生成实例 super必须是子类构造器的第一条语句

小结 一个Java程序(包括小应用程序)由若干个类组成,它们分布在由CLASSPATH指定的一个目录中 目录树中每个子目录中的类的集合对应Java一个包(package),子目录的层次与包的记法的层次对应

package myclass.calculate class A{} class B{} classC{} C:\ java myclass lib javasource bin classes.zip calculate myjava.java javac A B C appletviewer java import java.io.*; import java.awt.Graphics; import mycalss.calculate.*; public class test {} 让PATH包含…\java\bin SET CLASSPATH =.; C:\...\myclasses

小结 名空间及访问规则 --package,class/object,member,局部变量 --public ,private,protected,default 成员的可视性描述 public protected 缺省 private yes no yes* 同一类中 同一包中 不同包的 子类中 非子类 也不同包

小结 对象模型 ---Java的类和对象(一般,抽象,接口) --继承机制(单继承,多实现) static, import, package,final的含义和作用

下课了。。。 追求 休息一会儿。。。