轻工学院java语言程序设计第五讲

合集下载

Java程序设计基础第五章精品PPT课件

Java程序设计基础第五章精品PPT课件

{ return(x+y+z); }
public static void main(String[] args) {
System.out.println("Sum is:"+add(8.5,2.3));
} } 11.10.2020
5
保护访问控制符protected说明
➢用protected修辞的数据成员和方法可以被 该类自身、同一包中的其他类以及其他 包中的该类的子类
➢其主要作用就是允许其他包中的该类的 子类来访问父类的特定属性
11.10.2020
6
缺省访问控制符示例
➢ 位于default包中的Human.java
– (1)以相似的方式处理相近概念
– (2)使程序更易于扩展
Java中提供两种多态机制:
– 重载:同一类中定义了多个同名而不同内容的 成员方法
– 覆盖:子类可以重新定义与父类同名的成员方
法,使父类方法在子类对象中不复存在。
11.10.2020
11
重载示例
重载的方法主要通过形式参数列表中参数的个数、参数的数
第7章 Java 语言类的特性
1 类的私有成员与公共成员及访问控制 2 多态机制——方法的重载 3 构造方法 4 类的静态成员 5 对象的应用
11.10.2020
1
1 访问控制

数据成员与方法
Public
Public
所有类
缺省
包中类(含当前类)
Protected
包中类(含当前 包中类(含当前类) 类),所有子类
Human man=new Human();
System.out.println();

Java程序设计第五章

Java程序设计第五章
常抛出处理。 4、在调用EmployeeA的方法中进行异常处理,当前访问
方法EmployeeAConsole下的add和modify。 5、调用,测试验证输入非法职称。
5.2.3 解决方案
5.2.4 知识总结
1.自定义异常类
为了创建和使用自定义的异常,就必须先定义一个异 常类。可以使用extends关键字定义一个异常类,自定 义异常类通常是从Exception类派生而成。其语法格式 为:
(2)声明抛出异常
• 声明抛出异常不是捕获异常,将可能出现的异常交给调用的方 法来处理。声明方法时用throws子句声明将可能抛出哪些异常 。格式如下:
返回值类型 方法名([参数]) throws 异常类型{ 方法体 }
5.1.5 应用实践
定义一个100个整数元素的数组,使用随机整数 初始化所有100个元素。提示用户输入数组下标 ,越c程界kn 序,1ckn1 (n显 则kk 示 使1) 对 用kk 应异10,2,3,元常,n 素类的的值输。出如信果息用来户提输示入用的户下,标但 程序继续运行。
任务5.2 自定义异常
1 情境描述
2
问题分析
3 解决方案
4ห้องสมุดไป่ตู้知识总结
5 应用实践
5.2.1 情境描述
职称的取值只有初级、中级、副高、正高和其他 几种取值,然而,目前A类员工的信息接收时, 可以接收任意的字符,为了控制有效的职称输入 ,他需要完成以下的任务:
1)自定义异常类 2)抛出异常操作 3)异常信息捕捉
5.1.4 知识总结
1. Java的异常
(1)基本概念 在Java程序中异常一般由两种原因引起。 一种是程序中存在非法操作。另一种是程序员在程序中

java语言程序设计基础篇(第5章)英文PPT课件

java语言程序设计基础篇(第5章)英文PPT课件
1
Chapter 5 Methods
Opening Problem
2
Find the sum of integers from 1 to 10, from 20 to 30, and from 35 to 45, respectively.
Problem
3
int sum = 0; for (int i = 1; i <= 10; i++)
sum = 0; for (int i = 35; i <= 45; i++)
sum += i; System.out.println("Sum from 35 to 45 is " + sum);
Solution
5
public static int sum(int i1, int i2) { int sum = 0; for (int i = i1; i <= i2; i++) sum += i; return sum;
else result = num2;
return result; }
parameter list
return value
method signature
Invoke a method
int z = max(x, y);
actual parameters (arguments)
Formal Parameters 9
parameter list
return value
method signature
Invoke a method
int z = max(x, y);
actual parameters (arguments)

JAVA语言程序设计第五章

JAVA语言程序设计第五章
第5章 Java高级语言特征
第五章
Java 高级语言特征
静态变量、 静态变量、方法与初始化程序块 final 关键字 抽象类 Interface package 访问控制 内部类 其它
1
第5章 Java高级语言特征
5.1 static关键词 关键词
static关键词可以用来修饰类的成员变量、成员方法 关键词可以用来修饰类的成员变量、 关键词可以用来修饰类的成员变量 和内部类, 和内部类,使得这些类成员的创建和使用与类相关 而与类的具体实例不相关,因此以static修饰的变量 而与类的具体实例不相关,因此以 修饰的变量 或方法又称为类变量或类方法。 或方法又称为类变量或类方法。
6
第5章 Java高级语言特征 class ClassA{ public void methodOne(int i){}
静态方法编写需要注意的问题: 静态方法编写需要注意的问题
public void methodTwo(int i){} 因为静态方法的调用不是通过实例对象进行的, 因为静态方法的调用不是通过实例对象进行的,所以 public static void methodThree(int i){} 在静态方法中没有this指针,不能访问所属类的非静态 指针, 在静态方法中没有 指针 变量和方法。 变量和方法。 public static void methodFour(int i){} 子类不能重写父类的静态方法, 子类不能重写父类的静态方法,但在子类中可以声明 与父类静态方法相同的方法,从而将父类的静态方法 与父类静态方法相同的方法, class隐藏。另外子类不能把父类的非静态方法重写为静态 ClassB 隐藏。 extends ClassA{ 的。 public static void methodOne(int i){} } main()方法是一个静态方法。在main()方法中访问所在 方法是一个静态方法。 方法是一个静态方法 方法中访问所在 public void methodTwo(int i){} 类的成员变量或方法, 类的成员变量或方法,就必须首先创建相应的实例对 public void mehtodThreee(int i){} 象。 public static void methodFour(int i){} }

Java语言程序设计第五章PPT教学课件

Java语言程序设计第五章PPT教学课件

voidpf5u(b)l;icpuvobildicfv3o( i)d{f5}( ){
}
public vpoSuiydbslfti4ecm(c)l.ao{sus}t.Tpersitn{tln("我就对f5( )方法感兴趣!");
public} voidpfu5b(l)ic{st}atic void main(String[ ] args) {
作用二:继承时,可用来修饰父类方法,防止 子类同名方法发生重写。
public class Mammal {
public final void call( ) {
System.out.println("哺乳动物会叫。");
}
public class Cat extend Mammal {
}
public void call() { //编译时发生错误
}
Line l = new Line();
public class Line implemCiercnltescS=hanpeew{Circle();
6
6
接口
演示接口
当所有方法均为抽象的,即没有具体实现时, 可使用interface关键字定义为接口,它是某个 事物对外提供的一些功能的申明 。
接口中的方法均为抽象声明的,及没有具体实 现;接口中的属性均为静态常量。
使用implements关键字来实现接口,可以利用 接口实现多态。
7
7
接口
接口中的方法不能有任何方法体实现。
声明抽象类语法:
– abstract class{…… }
应用场合:父类中的某些抽象方法不包含任何 逻辑,子类可以通过方法重写的机制提供这种 抽象方法的实现细节。

Java教程第五章PPT

Java教程第五章PPT

5.1.3 特定于对象的消息
特定于对象的消息是指将所有能支持此对象可 接受消息的方法集中在一起,形成一个大消息, 称为特定于对象的消息。这些消息让对象执行这 个方法而不管它可能做什么及怎么做。特定于对 象的消息可分为三种类型: 1)可以返回对象内部状态的消息; 2)可以改变对象内部状态的消息; 3)可以做一些特定操作,改变系统状态的消息。

} } class studentScore { private int no; private double score; public void sendScore(int cno,double cscore) { no=cno; score=cscore; } void printScore() { System.out.println("No:"+no+" score:"+score); } } public class c5_1

class classArea { double lon,wid; double area(double x,double y) { double s; lon=x; wid=y; s=lon*wid;//求矩形面积 return s;//返回面积值 } }
类、数据成员和成员方法的访问控制符及其作用
5.2.1 公共访问控制符public
当一个类的访问控制符为public时,表明这个 类作为整体对其他类是可见和可使用的,这个类 就具有了被其他包中的类访问的可能性。但是, 处于不同包中的public类作为整体对其他类是可 见的,并不代表该类的所有数据成员和成员方法 也同时对其他类是可见的,这得由这些数据成员 和成员方法的修饰符来决定。只有当public类的 数据成员和成员方法的访问控制符也被声明为 public时,这个类的所有用public修饰的数据成 员和成员方法才同时对其他类也是可见的。 需要注意的是,数据成员和成员方法的访问控 制符被声明为public时,会造成安全性和封装性 下降,所以一般应尽量少用。

Java语言程序设计教程第五章

Java语言程序设计教程第五章
Java语言程序设计教程
第5章 继承与多态
5.1 5.2 5.3
5.4
5.5
5.6
5.7 5.8
继承的实现 变量隐藏和方法覆盖 子类的构造方法 抽象类和最终类 接口 多态 适配器设计模式 内部类
5.1 继承的实现
1.继承

继承是指在已有类的基础上,添加新的变量和方法从而产生一 个新的类。 创建新类的主要方法
【例5.2】在例5.1中,将Circle类中实例变量radius的访问权限 改为private,实现私有属性及方法的继承。(续)
public class Ex05_2 { public static void main(String[] args) { Circle o = new Circle();

代码复用的有力手段
“是一个(is a)”的关系
2.继承——子类的定义格式
[修饰符] class 子类名 extends 父类名 {
成员变量定义 构造方法定义 静态或实例初始化块 成员方法定义 }
【例5.1】在Java语言中,定义一个表示圆的类,在此基 础上扩展成圆柱体类。
class Circle{ double radius=10; public double getArea(){
【例 5.2 】在例 5.1 中,将 Circle 类中实例变量 radius 的访 问权限改为private,实现私有属性及方法的继承。
class Circle{ private double radius=10; public double getRadius(){ return radius; } public void setRadius(double radius){ this.radius=radius; } public double getArea(){ return Math.PI*radius*radius; } } class Cylinder extends Circle{ double height=100; public double getVolume(){ return Math.PI*getRadius()*getRadius()*height; } }

Java语言程序设计(第2版)丁振凡第5章

Java语言程序设计(第2版)丁振凡第5章

第 5 章
类 与 对 象
Java语言程序设计(第2版)
5.4.2 静态方法
• 用 static修饰的方法称为静态方法,也叫类方法 • 在static方法中只能处理类变量,也可访问其它static 方法; • 在static方法中绝不能直接访问任何归属对象空间的变 量或方法
第 5 章
类 与 对 象
第 5 章
类 与 对 象
Java语言程序设计(第2版)
写程序运行结果
public class RangeTest { int count=3; public void m( ){ for(int count=1;count<4;count++) System.out.println(count); System.out.println("count="+ count); } public static void main(String args[ ]) { new RangeTest().m( ); 1 } 2 } 3
第 5 章
类 与 对 象
Java语言程序设计(第2版)
(2) 局部变量
方法体中的局部变量 (1)作用域是在本方法内。 (2)变量前不能加修饰符。 (3)局部变量在使用前必须明确赋值,因为它没有 默认值,否则编译时会出错。 在语句块中定义的变量 在语句块中定义的变量它只在语句块中有效;
第 5 章
[修饰符] class 类名 [extends 父类名] [implements 类实 现的接口列表] { //类体 修饰 类型 属性1 [= 初值1] ; 数据成员 修饰 类型 属性2 [= 初值2] ; //... 其他属性 修饰 类型 方法1(参数列表) { 方法体

Java语言程序设计基础教程课件(第5章)

Java语言程序设计基础教程课件(第5章)

2.String类常用方法:
public int length() public char charAt(int index) public boolean equals(Object anObject) Int compareTo(String anotherString) String concat(String str) byte[] getBytes()
class ep { P104 例5-1 int x = 1; } class ep5_1 { public static void main(String args[]) { ep One = new ep(); ep Two = new ep(); String a1, a2, a3 = "abc", a4 = "abc"; a1 = new String("abc"); a2 = new String("abc"); System.out.println("a1.equals(a2)是" + (a1.equals(a2))); System.out.println("a1==a2是" + (a1 == a2)); System.out.println("a1.equals(a3)是" + (a1.equals(a3))); System.out.println("a1==a3是" + (a1 == a3)); System.out.println("a3.equals(a4)是" + (a3.equals(a4))); System.out.println("a3==a4是" + (a3 == a4)); System.out.println("One.equals(Two)是" + (One.equals(Two))); System.out.println("One==Two是" + (One == Two)); One = Two; System.out.println("赋值后,One.equals(Two)是" + (One.equals(Two))); System.out.println("赋值后,One==Two是" + (One == Two)); } }

JAVA程序设计教程(第七版)第5章

JAVA程序设计教程(第七版)第5章

2
Outline
Boolean Expressions The if Statement Comparing Data The while Statement Iterators
The ArrayList Class
Determining Event Sources Check Boxes and Radio Buttons
5
Boolean Expressions
• A condition often uses one of Java's equality operators or relational operators, which all return boolean results:
== != < > <= >= equal to not equal to less than greater than less than or equal to greater than or equal to
if (count != 0 && total/count > MAX) System.out.println ("Testing.");
• This type of processing should be used carefully
– make decisions – repeat processing steps in a loop
• Chapter 5 focuses on:
– – – – – – – boolean expressions the if and if-else statements comparing data while loops iterators more drawing techniques more GUI components

Java语言程序设计-5

Java语言程序设计-5

13
跟踪方法调用
输出结果
public class MethodExample { public static void main(String[] args) { int x = 10; int y = 13; int maxNumber = max(x, y); System.out.printf("The maximum between %d and %d is %d\n", x, y, maxNumber); } public static int max ( int n1, int n2 ) { int result; if (n1 >= n2) result = n1; else result = n2; return result; } }
int m = max(x, y);
返回值
定义方法
调用方法
3
方法必须包括方法名和参数列表 定义在方法头中的变量被称为形式参数(formal parameters,简称型参) 当调用方法时,就要给参数传递一个值,这个值被称为 实际参数(actual parameter 或 argument,简称实参) 方法可以返回结果(返回值)。
9
跟踪方法调用
n1 = 10, n2 = 13
public class MethodExample { public static void main(String[] args) { int x = 10; int y = 13; int maxNumber = max(x, y); System.out.printf("The maximum between %d and %d is %d\n", x, y, maxNumber); } public static int max ( int n1, int n2 ) { int result; if (n1 >= n2) result = n1; else result = n2; return result; } }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

构造方法的继承
• 子类没有定义构造方法时,自动继承父类不含 子类没有定义构造方法时 自动继承父类不含 参参数的构造方法 的构造方法, 参参数的构造方法,并在创建新子类对象时自 动执行 • 子类有自己的构造方法时,创建新子类对象时 子类有自己的构造方法时 也要先执行父类 的构造方法, 也要先执行父类不含参数的构造方法,再执行 自己的构造方法 • 子类的构造方法定义中,如要调用父类的含参 子类的构造方法定义中, 数的构造方法, 关键字, 数的构造方法,需用super关键字,且该调用语 句必须是子类构造方法的第一个可执行语句。 句必须是子类构造方法的第一个可执行语句。
• 构造方法是一种特殊的成员方法,构造方法与 构造方法是一种特殊的成员方法, 类同名。 类同名。 • 在创建每个新对象时自动执行,以保证新对象 在创建每个新对象时自动执行, 的各成员都有合法、确定的初值。 的各成员都有合法、确定的初值。
构造方法( 构造方法(例)
class Dog { private int weight ; Dog类的构造方法 public Dog(){ // Dog类的构造方法 //实现对象状态 成员变量) 实现对象状态( weight = 42 ; //实现对象状态(成员变量)的初始化 } public int getWeight() { return weight;} public void setWeight(int myWeight) { weight = myWeight;} } public class UseDog{ public static void main(String[] args){ //用构造方法创建对象 Dog d = new Dog(); //用构造方法创建对象 System.out.println("The dog's weight is "+ d.getWeight()); } }
《Java程序设计》 第五讲 Java面向对象的特征(二) Java面向对象的特征( 面向对象的特征
构造方法( 构造方法(constructor)
• 问题的提出
• Java试图在每个对象一诞生时,就给它一个指定的 Java试图在每个对象一诞生时, 试图在每个对象一诞生时 状态(即成员变量的初值),但有时系统的缺省初 状态(即成员变量的初值),但有时系统的缺省初 ), 值并不合适;所以在创建一个新对象时, 值并不合适;所以在创建一个新对象时,需用构造 方法完成合法的初始化, 方法完成合法的初始化,使成员变量的初始化工作 不依赖于外界(系统)完成。 不依赖于外界(系统)完成。
String department ;
}
子类是从已有的类创建新类的一种方法。 子类是从已有的类创建新类的一种方法。 父类 来自系统类库或者是用户自定义类 。
类的继承
private外所有父类成员 外所有父类成员, 子类将继承除 private外所有父类成员, 修饰符的属性、 (带private 修饰符的属性、方法是不能 被继承的) 被继承的) Java是单继承的,不支持多重继承( Java是单继承的,不支持多重继承(但可用 是单继承的 接口实现),extends后的类名只能有一个 ),extends 接口实现),exte引用指向它时, 一个对象在没有引用指向它时,可作为垃 圾收集。 圾收集。 垃圾收集器:Java运行环境中的垃圾收集 垃圾收集器: 运行环境中的垃圾收集 器周期性地释放不用对象所占用的空间,自 周期性地释放不用对象所占用的空间, 释放不用对象所占用的空间 动实现内存回收。 动实现内存回收。
类的继承: 类的继承:扩展
子类对父类可做扩展和特殊化。 子类对父类可做扩展和特殊化。子类继承 扩展 父类的属性,方法, 父类的属性,方法,子类中只需声明特有 的东西。
创建新的成员:变量和方法 创建新的成员: 重新定义父类中已有的变量: 重新定义父类中已有的变量:父类变量被隐藏 重新定义父类中已有的方法 :重写 or 覆盖
super关键字 this super关键字
this指向该关键字所在的类。 指向该关键字所在的类。 指向该关键字所在的类 Super指向该关键字所在类的父类。 指向该关键字所在类的父类。 指向该关键字所在类的父类
Public class Empolyee { private String name ; private int salary; public String getDetails( ){ return “Name: ”+name+“\nSalary:”+salary; } } public class Manager extends Empolyee { private String department ; public String getDetails( ){ //子类重写方法 子类重写方法 return super.getDetailes( )+‘\nDepartment: “+ department; } }
运算结果: 运算结果:The dog's weight is 42
构造方法的特点
• 构造方法与成员方法不同,不能被直接调 构造方法与成员方法不同, 必须通过new调用; new调用 用,必须通过new调用; • 创建对象时,利用运算符 new 在内存中开 创建对象时, 辟专用空间,存放指定的类的实例( 辟专用空间,存放指定的类的实例(即对 ),这时会自动执行类的构造方法 这时会自动执行类的构造方法, 象),这时会自动执行类的构造方法,初 始化新对象的成员变量. 始化新对象的成员变量.
构造方法的缺省:例
//程序员未定义构造方法 class Dog { //程序员未定义构造方法 private int weight ; public int getWeight() { return weight;} public void setWeight(int myWeight) { weight = myWeight;} } public class UseDog{ public static void main(String[] args){ //用缺省的构造方法创建对象 Dog d = new Dog(); //用缺省的构造方法创建对象 System.out.println("The dog's weight is "+ d.getWeight()); } }
类的继承: 类的继承:extends 关键字
语法: 关键字定义子类。 语法:Java中用 extends 关键字定义子类。 中用
public class Employee { String name ; Date hireDate ; Date dateofBirth ; String jobTitle ; int grade ; … } public class Manager extends Employee {
– new 返回类对象的一个引用
p1 0xabcd x y
0xabcd
0.0 0.0
Point p3 = p2;
–对象的声明和实例化可写在同一条命令中 对象的声明和实例化可写在同一条命令中
Point p4 = new Point();
对象的使用
• 访问对象的成员变量 对象. 对象.成员变量 • 调用对象的方法 对象. 对象.方法 • 注意对象中成员变量和方法的访问权限管 理。
构造方法的缺省
• 每一个类至少有一个构造方法。 每一个类至少有一个构造方法。 • 当未定义任何构造方法时,系统在编译时, 当未定义任何构造方法时,系统在编译时, 会提供一个缺省构造方法:无参数, 会提供一个缺省构造方法:无参数,方法 体中没有内容 • 缺省构造方法的初始化数据初值: 缺省构造方法的初始化数据初值: 数值型:0; 布尔型:false; 数值型: 布尔型: 引用型: 字符串型: 引用型:null; 字符串型:null; • 一旦定义了构造方法,则缺省构造方法自 一旦定义了构造方法, 动失效
• 一个类可创建多个构造方法:构造方法的重 一个类可创建多个构造方法: 载。 • 例: class Date( ) { • Date( ) {……} • Date(int x, int y ) {……} • Date(int x, char y ) {……} • } • Date d1=new Date( ) • Date d2=new Date(5,’A’ ) • Date d3=new Date(5,12) • //分加调用不同的构造方法 分加调用不同的构造方法
(override )
子类中的方法应与父类中的被重写的方法有完全 相同的参数列表、 相同的参数列表、返回值
方法重写例子
类的继承:this 类的继承:this , super
引用类的成员变量或方法时的前缀
this: this: 当前类的方法或变量 super: 直接父类的成员(只能上溯一层) super: 直接父类的成员(只能上溯一层) 例:Employee父类 Employee父类 Manager子类 Manager子类 this.getDetails():调用子类的方法 this.getDetails():调用子类的方法 super.getDetails():调用父类的方法 super.getDetails():调用父类的方法
例:Date d = new Date (22, 5, 2003);
构造方法的特点( 构造方法的特点(续)
构造方法没有返回类型,但声明时也 构造方法没有返回类型, 不加void。 不加 。 构造方法可以完成更多的操作,而不 构造方法可以完成更多的操作, 仅仅局限于变量的初始化。( 。(如在构造 仅仅局限于变量的初始化。(如在构造 方法中调用其他方法等。) 方法中调用其他方法等。)
调用父类构造方法
缺省是不带参数的构造方法。 缺省是不带参数的构造方法。 如果需要调用特殊的父类构造方法, 如果需要调用特殊的父类构造方法,则需在 子类构造方法中第一行通过super( … )调用。 调用。 子类构造方法中第一行通过 调用
相关文档
最新文档