《JAVA北京大学讲义第一章 Java的类课件》由会员分享,可在线阅读,更多相关《JAVA北京大学讲义第一章 Java的类课件(76页珍藏版)》请在金锄头文库上搜索。
1、1,第一章 Java的类,北京大学计算机系 代亚非,2,第一章 Java的类,1.1 有关面向对象的概念 1.2 Java语言的特点 1.3 Java的开发环境 1.4 第一个Java程序 1.5 Java类型系统 1.6 Java中字符串的类 1.7 Java中的类、方法和变量 1.8 Java名空间及访问规则 1.9 Java中的抽象类、接口和程序包 1.10 对象的构造函数,3,1.1 有关面向对象的概念,面向对象程序设计围绕的几个主要概念: 抽象数据类型、类、类型层次(子类),继承性、多态性。,4,1.1 有关面向对象的概念,class Car int color_number; in
2、t door_number; int speed; void brake() void speedUp() ; void slowDown() ,数据抽象类型,5,1.1 有关面向对象的概念,什么是类? 类是描述对象的“基本原型”,它定义一种对象所能拥有的数据和能完成的操作,在面向对象的程序设计中,类是程序的基本单元。,程序中的对象 是类的一个实例,是一个软件单元,它由一组结构化的数据和在其上的一组操作构成。,6,1.1 有关面向对象的概念,变量:即指对象的所知道的状态 方法:指对象的功能单元。 什么是消息? 软件对象通过相互间传递消息来相互作用和通信 一个消息由三部分组成: 1. 接受消息的
3、对象 2. 要完成方法的名字 3. 方法需要的参数,7,1.1 有关面向对象的概念,一个例子 在程序中操作对象是类的一个实例:即对象 创建一个对象 Hello obj=new Hello(); 调用方法 obj.showString(“Hello World!”),class Hello ,private String s;,public void showString () System.out.println(s); public void changeString(String str) s=str; return s;,8,1.1 有关面向对象的概念,什么是封装? 封装把对象的所有组成
4、部分组合在一起,封装定义程序如何引用对象的数据,封装实际,私有数据,方法,上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。,方法,数据,对象A,对象B,公有数据,9,1.1 有关面向对象的概念,什么是子类? 子类是作为另一个类的扩充或修正所定义的一个类.,bicycle,(super class),Mountain bikes,Racing bikes,Tandem bikes,sub class,10,1.1 有关面向对象的概念,什么是继承? 继承是子类利用父类中定义的方法和变量就像它们属于子类本身一样.,class Car int color_number; int do
5、or_number; int speed; push_break() add_oil() ,class Trash_Car extends Car double amount; fill_trash() ,11,1.1 有关面向对象的概念,什么是方法的覆盖? 在子类中重新定义父类中已有的方法。,class Car int color_number; int door_number; int speed; push_break() speed=0; add_oil() ,class Trash_Car extends Car double amount; fill_trash() push_br
6、eak() speed=speed-10; ,12,1.1 有关面向对象的概念,什么是方法的重载(多态性)? 在同一个类中至少有两个方法用同一个名字,但有不同的参数。,类,void show(int int_num),void show(double double_num),void show(nit nit_ um, float float_um),123,1.23,123,1.23,13,1.2 Java语言的特点,Java是什么? Java= “C+”-“复杂性和奇异性”+“安全性和可移植性” Java由那些特性? (1) 面向对象 封装性、多态性、继承性、动态链接 (2) 操作平台无关
7、性 严格的语言定义:“没有依据机器的不同而不同” 或“由编译器决定”等字眼,最后的目标码都是一致的,初值都是确定的,14,1.2 Java语言的特点,两种工作模式的比较,源 程 序,Java编译器,SPARC,pentium,Powerpc,中间码,Powerpc,pentium,SPARC,二进制,源 程 序,SPARC,Powerpc,pentium,Powerpc,pentium,SPARC,编译器,二进制,Java解释器,15,1.2 Java语言的特点,.,编译,没有绝对地址,调入包含,继承所用道的所有类, 内存分配确定,编程真正可执行的机器码,不存在伪造的指针 不违反访问权限 不非
8、法访问对象 不导致操作栈溢出,16,1.2 Java语言的特点,Java虚拟机,不同的操作系统有不同的虚 拟机. 它类似一个小巧而高效的CPU. byte-code代码是与平台无关的 是虚拟机的机器指令. Java字节代码运行的两种方式: interpreter(解释方式) Just-in-time(即时编译):有代码 生成器将字节代码转换成本机 的机器代码,然后可以以较高速 度执行.,17,1.2 Java语言的特点,(3) 安全问题 Java是在网络环境下使用的语言 一个安全的网络至少要防止以下几种破坏的可能性: 毁灭系统资源 消耗系统资源 挖掘系统或个人机密 骚扰正常工作的进行,18,1
9、.2 Java语言的特点,19,1.2 Java语言的特点,(4) 多线程 Java提供现成的类Thread,只要继承这个类就可以编写多线程的程序。 (5) Java与C及C+的区别 不再有#include 和#define 等于处理功能 不再有structure,union及typedef 不再有函数、不再有指针、不再有多重继承 不再有goto 不再有操作符重载(Operatior Overloading) 取消自动类型转换,要求强制转换,20,1.3 Java的开发环境,Java开发环境 JDK JDK中有Java编译器和bytecode解释器Applwtviewer是小应用程序的byte
10、code解释器 JDK的安装 直接执行JDK.exe,21,1.3 Java的开发环境,产生如下目录结构 javabin的目录下包含义下主要文件: javac: Java编译器, 用来将java程序编译成 Bytecode java: Java编译器,执行已经转换成Bytecode的 java应用程序. jdb: Java调试器, 用来调试java程序 javap: 反编译,将类文件还原回方法和变量. javadoc:文档生成器,创建HTML文件 appletviwer : Java解释器, 用来解释已经转换成 Bytecode的java小应用程序.,22,1.3 Java的开发环境,java
11、lib子目录 库函数,其中classese.zip不要解开. 在autoexec.bat中加入以下两条命令 1. PATH c:javabin 2. SET CLASSPATH=. ; c:.libclasses.zip; c:myclasses;,23,1.3 Java的开发环境,24,1.3 Java的开发环境,vj1.1+的使用 1.进入vj,创建一个project 2.加入java文件 3. 编辑java文件 4. 编译java文件 5. Build一个project文件 6. 运行java程序 -如果是小应用程序,则直接在VJ环境下运行 -如果是应用程序,则在dos下运行,25,1.
12、4 你的第一个Java程序,编辑存盘:主类名(含有main方法)和 文件名要一致性 HelloWorldApp.java 编译程序 : javac HelloWorldApp.java 运行程序 : java HelloWorldApp “myjava” 运行结果 : Hi, myjava,class HelloWorldApp public static void main(String args) System.out.println(“Hi, ”+args0); ,Java应用和Java小应用程序,26,1.4 你的第一个Java程序,1. 声明一个类 : public class He
13、lloWorldApp , 类名的第一个字母要大写 2. 一个类中可有很多方法, main方法是运行程序的第一个方法,方法名的第一个字母要小写. 3. System.out.println是向屏幕输出,相当于C中的printf();,public class HelloWorldApp public static void main(String args) System.out.println(“Hi, ”+args0); ,27,1.4 你的第一个Java程序,4. 命令行参数的获取 c:java HelloWorldApp myjava! 6. 字符串的拼接,public class H
14、elloWorldApp public static void main(String args) System.out.println(“Hi, ”+args0); ,28,1.4 你的第一个Java程序,Java小应用程序不能直接执行和使用,必须要在浏览器中执行,import java.applet.Applet; import java.awt.*; public class HelloApplet extends Applet public void paint(Graphics g) g.drawString(“Hello World”,0,50); ,编辑存盘: 主类名(exten
15、ds Applet)和文件名一致 编译代码 : javac HelloApplet.java 编写HTML文件 : HelloApplet.html,29,1.4 你的第一个Java程序,运行applet程序: 1. appletviwer HelloApplet.html 2. 在浏览器中运行 运行结果:,Hello World!, ,30,1.4 你的第一个Java程序,理解程序 1. import语句相当于C语言中的include每 2. 每一个applet都是java.applet.Applet的子类 用extends继承 3. applet中没有main方法,import java.
16、applet.Applet; import java.awt.*; public class HelloApplet extends Applet public void paint(Graphics g) g.drawString(“Hello World”,0,50); ,31,1.4 你的第一个Java程序,4. 当applet被浏览器运行时,paint语句自动执行 5. 在applet中与屏幕输出有关的操作通过Graphics对象来实现 6. 一个Java源文件内最多只能有一个public 类,称为主类,且必须和文件名同名,import java.applet.Applet; import java.awt.*; public class HelloApplet extend