java编程语言基础教学PPT课件
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12
类成员的存储修饰符
❖static
静态成员,属于类而不是对象,任何该类的实例 对象都可以访问或修改
引用静态成员可以使用类名,也可以使用对象名 静态方法只能处理静态变量或调用静态方法
• 原因:非静态的变量和方法需要先创建类的实例对象 才能使用,而静态方法使用前不需要创建任何对象
• 静态方法不允许直接访问该类的非静态成员,但允许 通过创建该类的实例对象去访问类中的非静态成员
❖匿名对象只使用一次就成为垃圾 ❖一般在某个对象只使用一次的时候采用匿
名对象 ❖见示例ex11
31
类的封装2-1
❖一个类就是一个小的模块,我们应该让模 块仅仅公开必须要让外界知道的内容,隐 藏其他一切内容
❖在进行程序设计时,尽量避免一个模块直 接修改或操作另一个模块的数据
❖模块设计追求
强内聚
• 各项功能尽量在类的内部完成,不让外界干预
❖这两种属于访问修饰符,可以和后面的两 种修饰符中的一种同时使用
6
类修饰符2-2
❖abstract
抽象类,是一种不能创建实例对象的概念类 通常抽象类是它所有子类的公共属性的集合
❖final
最终类,不能有子类 不能和abstract同时修饰一个类
7
成员变量(属性)定义
❖简单成员变量定义格式
[<修饰符>] <变量类型> <变量名>[=<初值>];
❖局部变量在进行取值操作前必须被初始化 或被赋值,否则会出现编译错误
❖见示例ex05
20
构造方法
❖构造方法是一种特殊的方法
构造方法的名称与类名称相同 构造方法没有返回类型
• 注意:不是void类型,是没有类型
构造方法的功能是在创建对象时初始化其成员 变量
Java的每个类里都至少有一个构造方法
• 如果程序员没有显式定义,系统会自动产生一个默 认的构造方法,这个方法没有参数也没有代码
行为
• 对象的操作 • 对象通过某种操作来设置或改变对象的状态
标志
• 区分不同对象的标识符
3
类和对象 2-2
❖类是具有共同属性和行为的对象的集合 ❖类和对象是一般与个别的关系 ❖类也称为模板,提供了对象的基本框架 ❖类可以看作是一种复合数据类型
4
创建类
在类中,属性是通过成员变 量体现的,而操作是用成员 方法(又称为函数)实现的
重载构造方法java为每一个类自动提供缺省构造方法缺省构造方法将成员变量的值初始化为缺省值一旦创建了自己的构造方法缺省的构造方法将不复存在重载构造方法提供了一组创建对象的方式可以根据需要决定是否带初始参数见示例ex07this引用创建对象使用下列语法可创建对象new类名实参表关键字new通常称为创建运算符用于分配对象内存并将该内存初始化为缺省值一旦new完成分配和初始化内存它就调用构造方法来执行对象初始化垃圾回收器java的一个重要特点是能够自动回收垃圾java解释器承担为实例对象分配和回收内存空间的工作解释器在为一个实例对象分配完存储空间后便开始记录对该实例对象所占内存区域的使用一旦对象使用完毕便将其回收到垃圾箱中回收内存的工作由jre后台线程完成使程序设计人员摆脱了自己控制内存使用的风险systemgc的作用java的垃圾回收器的启用不由程序员控制也无规律可循并不会一产生垃圾它就被唤起不是一个很可靠的机制由于java的垃圾回收器的启用具有偶然性java提供了一个systemgc方法用于强制启动垃圾回收器见示例ex08对象的使用对象可以作为类的成员对象可以作为方法的参数对象可以作为方法的返回值对象可以作为数组元素见示例ex09对象的比较方式比较两个操作数是否引用相同的对象equals方式比较两个对象的内容是否一致见示例ex10匿名对象创建对象时不定义对象的句柄这样的对象叫做匿名对象匿名对象只使用一次就成为垃圾一般在某个对象只使用一次的时候采用匿名对象见示例ex11类的封装21一个类就是一个小的模块我们应该让模块仅仅公开必须要让外界知道的内容隐藏其他一切内容在进行程序设计时尽量避免一个模块直接修改或操作另一个模块的数据模块设计追求强内聚各项功能尽量在类的内部完成不让外界干预弱耦合提供给外部尽量少的方法调用类的封装22类的封装性一般通过下面的方式实现将类的成员变量声明为private提供一个或多个public方法实现对成员变量的访问或修改见示例ex12内部类41在一个类的内部定义的类就是内部类也称为嵌套类内置类当类1中的程序代码要用到类2的实例对象而类2中的程序代码又要访问类1中的成员这时将类2做成类1的内部类程序代码会更容易编写同时程序更加模块化内部类可以直接访问包含它的类的所有成员包括private成员
System.out.pcr.iandtdl(n1(0",两20个);浮点数相加得"+c);
}
c.add(40.0F, 35.65F);
public void adcd.(adSdt(r"i早n上g "a,, "S好tr"i)n;g b) {
String c =}a + b;
System.out}.println("两个字符串相加得 "+ c);
<方法体> }
举例
public int addNum(int a, int b)
{
return a+b; }
注:对成员变量的操 作只能放在方法中
9
类成员的访问修饰符2-1
❖public
公共成员,其使用范围如下
• 如果它属于一个公共类,可以被所有类访问 • 如果它属于一个无修饰符的类,可以被同一个包中
否则
– 对基本数据类型,可通过自动转换或强制转换使类型一 致
– 对于类类型,必须完全一致或者为子类 – 如果定义的返回类型为接口,则返回值的数据类型必须
实现该接口
❖见示例ex04
19
局部变量的使用
❖方法中定义的变量称为局部变量 ❖局部变量声明时不能使用final之外的其他
修饰符
final修饰的局部变量实际上是一个常量,它的 生命期超出方法运行的生命期,但其作用域不 超出这个方法
Java中定义类的通用格式
[<修饰符>] class 类名 [extends <父类名>] [implements <接口名>]
{
[<修饰符>] type variable1; …
成员变量
[<修饰符>] type variableN;
[<修饰符>] type methodname1(parameter-list){ //方法体
❖abstract
抽象方法,只有方法说明(方法头),而没有 具体实现(方法体)
该方法的具体实现会出现在该类的子类中 这种方法使该类的子类都有一个同名的方法作
为统一的接口 包含抽象方法的类必须声明为abstract
❖final
最终方法,不能被子类重写 被private修饰的方法也被看作最终方法
16
成员方法的其他修饰符2-2
Java 编程基础
第三章
类、对象、接口和包
1
本章主要内容
• 掌握如何创建类和对象、如何使用对象 • 掌握方法的重载和重写 • 掌握类的继承 • 掌握接口的使用 • 掌握包的使用 • 了解如何使用jar文件
2
类和对象2-1
❖对象是对客观世界中具体的事物的映射 ❖对象的三处的状态
的所有类访问
使用该修饰符的方法可以作为该类对外的接口, Java程序可以通过该方法与类内的成员进行信 息交换
10
类成员的访问修饰符2-2
❖protected
保护成员,其使用范围如下
• 如果它属于一个公共类,可以被该类自身、同包的 其他类和该类的子类访问
• 如果它属于一个无修饰符的类,可以被同一个包中 的所有类访问
回收内存的工作由JRE后台线程完成,使程序 设计人员摆脱了自己控制内存使用的风险
27
System.gc()的作用
❖Java的垃圾回收器的启用不由程序员控制 ,也无规律可循,并不会一产生垃圾,它 就被唤起,不是一个很可靠的机制
❖由于Java的垃圾回收器的启用具有偶然性 ,Java提供了一个System.gc()方法,用于 强制启动垃圾回收器
静态方法中不能出现this和super关键字
• 原因:使用静态方法时被引用的对象还没有产生
见示例ex01
13
静态代码块
❖一个类中可以包含不属于任何方法的静态 代码块
当载入类时,静态代码块被执行,且只执行一 次
通常用于静态成员变量的初始化
❖见示例ex02
14
成员变量的其他修饰符
❖final
最终变量,也称为符号常量 当用“public static final”去声明常量时,这个
public class Test { int x; Test(int x) { this.x=x; }
如果一个方法中有与成
员 该 的指x传赋方 访变明递法 问量值此的同中 是为对局名对 局通这 部的象部过个 变局的变构变量部成量量,变造员x量名而方的变,法值量
不再是成员变量
public void showValue(){
System.out.println(“x等于" +x);
引用此对象
}
的成员变量x
public static void main(String args[]) {
Test test = new Test((int)arg[0]);
test.showValue(); }
}
25
创建对象
当创建一个类时,只是
❖默认说明(省略修饰符)
该成员只能被同一个包中的类访问
❖private
私有成员,只能被该类自身访问,任何其他类 都不可访问,包括该类的子类
11
类成员访问修饰符比较
在类声明为public时,类成员的访问修饰符使用 范围比较如下:
同一类
private
同一包中的类
子类
其他包中的类
默认
protected public
基本类型作为方法参数时,参数进行值传递 复合类型作为方法参数时,参数进行址传递
• 对参数的改变会影响原来的参数值
❖见示例ex04
18
方法的返回值
❖Java中,有的方法有返回值,有的没有
有返回值的方法声明时加返回值的类型,无返 回值的方法声明时加void类型
方法的返回值是通过return语句实现的
return <表达式>; • 要求表达式的类型与方法声明中返回值的类型一致,
弱耦合
• 提供给外部尽量少的方法调用
32
类的封装2-2
❖类的封装性一般通过下面的方式实现
将类的成员变量声明为private 提供一个或多个public方法实现对成员变量的
• 如果编程者定义了构造方法,系统就不再提供默认 的构造方法了
❖见示例ex06
21
方法重载(overload)
• 方法重载是Java实现面向对象的多态性机制的一 种方式
• 同一个类中多个方法有相同的名字,不同的参数 列表,这种情况称为方法重载
• 参数的类型或个数不同构成重载 • 返回类型不同并不足以构成方法重载
创建了一种新的数据类
型。对象是类的一个实
• 使用下列语法可创建对例。象
new <类名>(<实参表>)
• 关键字 new 通常称为创建运算符,用于分 配对象内存,并将该内存初始化为缺省值
• 一旦 new 完成分配和初始化内存,它就调 用构造方法来执行对象初始化
String str=new String("abc");
} … [<修饰符>] type methodnameN(parameter-list){
//方法体 }
}
成员方 法
5
类修饰符2-1
❖public
公共类,可以被其他类使用 Java程序中的公共类必须放在一个同名的.java
源文件中
❖默认说明(省略修饰符)
该类只能被同一个包中的类使用,不能被其他 包中的类访问
• 当重载方法被调用时,编译器根据参数的类型和 数量来确定实际调用哪个重载方法的版本
注意方法重载(overload)与方法重写(override)的区别, 后面将介绍方法重写的概念
22
方法重载示例
class Calculation {
public void add( int a, int b) {
常量就成为全局常量,它只能在声明时赋值, 其使用范围只受所在类的修饰符影响
public static final <类型> <常量名>=<初值>; • 如果它属于一个公共类,可以被所有类访问 • 如果它属于一个无修饰符的类,可以被同一个包中
的所有类访问
❖符号常量的使用见示例ex03
15
成员方法的其他修饰符2-1
每个创建的对象都有自己的生存时间,
对象名(对象的引用句柄), 当没有引用变量指向某个对象时,这
保存对象的内存地址
个对象就会变成垃圾,不能再被使用
26
垃圾回收器
❖Java的一个重要特点是能够自动回收垃圾 ❖Java解释器承担为实例对象分配和回收内
存空间的工作
解释器在为一个实例对象分配完存储空间后, 便开始记录对该实例对象所占内存区域的使用, 一旦对象使用完毕,便将其回收到垃圾箱中
❖native
本地方法,该修饰符通常用来说明用其他语言 编写的特殊方法,这种方法只在类内给出声明, 方法定义在类外
使用本地方法可以充分利用已有程序,避免重 复性劳动
❖synchronized
使用该修饰符的方法主要用于多线程程序的协 调和同步
17
方法的参数
❖定义方法时可以有参数,也可以没有参数, 多个参数用逗号分隔,每个参数由参数类 型和参数名组成,可以是基本类型,也可 以是复合类型
❖对象成员定义格式
[<修饰符>] <类名> <对象名>[=new <类名>(<实参表>)];
当类中含有其他类的对象时,反映了两个类之 间的包含关系
8
成员方法定义
方法是包含在类中的函数
定义成员方法的一般格式
[<修饰符>] <返回值类型> 方法名([<参数列表>]) [throws <异常类名列表>] {
int c = a + b;
System.out.println("两个整数相加得 "+ c);
}
class CalculationDemo {
public void apudbdl(ifclosattatai,c fvlooiadtmba)i{n(String args[]) {
float c = a C+albc;ulation c = new Calculation();
}
}
编译器决定
调用版本
23
重载构造方法
• Java 为每一个类自动提供缺省构造方法 • 缺省构造方法将成员变量的值初始化为
缺省值 • 一旦创建了自己的构造方法,缺省的构
造方法将不复存在 • 重载构造方法提供了一组创建对象的方
式,可以根据需要决定是否带初始参数 • 见示例ex07