Java语言程序设计_基础篇_中文ppt_第五章

合集下载

Java课件(第五章)

Java课件(第五章)

静态属性与实例属性的比较
在Cust类中,增加属性bankName代表账 户所属的银行,因为它是每个账户所共有 的,将其定义为静态属性。再创建一个账 户总数(或总编号)allNum,它代表当前一共 创建了多少个账户,也不属于任何一个账 户对象,而是属于Cust类的,也将其定义 为静态属性。最后定义一个流水编号,它 是对象所独有的,应该定义为实例属性。
Public class TestThis{ public static void main(String[] args){ SimpleClass simple=new SimpleClass(); simple.test(); System.out.print(“simple对象中a的值 为:”); System.out.println(simple.a); }
如果将对象比作汽车,那么类就是汽车的设计图纸。 所以面向对象程序设计的重点是类的设计,而不是对 象的设计。
类的定义
class Person { int age; void shout() {System.out.println(“oh,my god! I am “ + age);} } • age是类的属性 ,也叫类成员变量 。 • shout是方法也叫类的成员函数。 • shout方法可以直接访问同一个类中的age变量 , 如果一个方法中有与成员变量同名的局部变量, 该方法中对这个变量名的访问是局部变量,而 不再是成员变量。
运行结果
X=103
静态代码块
• 一个类中可以使用不包含在任何方法体中的静态 代码块(static block ),当类被载入时,静态代码 块被执行,且只被执行一次,静态块经常用来进 行类属性的初始化。 • 类中的静态代码块被自动执行,尽管我们产生了 类的多个实例对象,但其中的静态代码块只被执 行了一次。当一个程序中用到了其他的类,类是 在第一次被使用的时候才被装载,而不是在程序 启动时就装载程序中所有可能要用到的类。

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基础第5章课件

Java基础第5章课件
• 只创建了一个TicketWindow对象,然后创建了四个线程,在每个 线程上都去调用这个TicketWindow对象中的run()方法,这样就可 以确保四个线程访问的是同一个tickets变量,共享100张车票。
5.2 线程的创建
让IT教学更简单,让IT学习更有效
• 5.2.3 两种实现多线程方式的对比分析
让IT教学更简单,让IT学习更有效
第五章 多线程
• 多线程的概念 • 线程创建的两种方式 • 线程的调度 • 线程的安全和同步
• 线程的生命周期及状态转换
• 多线程通信
目录
线程概述
让IT教学更简单,让IT学习更有效
线程的创建 线程的生命周期及状态转换
线程的调度
多线程同步 多线程通信
5.1 线程概述
getName()可以获取到线程的名称。
5.2 线程的创建
让IT教学更简单,让IT学习更有效
• 5.2.3 两种实现多线程方式的对比分析
– 通过继承Thread类的方式来实现多线程的创建
5.2 线程的创建
– 运行结果
让IT教学更简单,让IT学习更有效
• 5.2.3 两种实现多线程方式的对比分析
– 可以看出,每张票都被打印了四次。出现这样现象的原因是四个 线程没有共享100张票,而是各自出售了100张票。在程序中创建 了四个TicketWindow对象,就等于创建了四个售票程序,每个程 序中都有100张票,每个线程在独立地处理各自的资源。
创建一个线程对象后,该线程对象就处于新建状态,此时它不能 运行,和其它Java对象一样,仅仅由Java虚拟机为其分配了内存,没 有表现出任何线程的动态特征。
• 2、就绪状态(Runnable)

5Java基础第5章课件

5Java基础第5章课件
再如: String[ ][ ] AS = new String[3][4];
让IT教学更简单,让IT学习更有效
AS:xxx
5.2 多维数组
让IT教学更简单,让IT学习更有效
5.2.2 二维数组的初始化
(2) 从最高维开始(而且必须从最高维开始),分别为每一维 分配空间,此时二维数值中每行的元素个数可以不相等。
– 3、数组排序
• 在操作数组时,经常需要对数组中元素进行排序。
5.1 一维数组
让IT教学更简单,让IT学习更有效
• 5.1.3 数组的常见操作
– 3、数组排序
• 在操作数组时,经常需要对数组中元素进行排序。
bubbleSort ()方法中通过一个嵌套for循环实现了冒泡排序。
5.1 数组
让IT教学更简单,让IT学习更有效
• 第二步,除了最后一个元素,将剩余的元素继续进行两两比较,过程与第一步相 似,这样就可以将数组中第二大的数放在了倒数第二个位置。
• 第三步,以此类推,持续对越来越少的元素重复上面的步骤,直到没有任何一对 元素需要比较为止。
5.1 一维数组
让IT教学更简单,让IT学习更有效
• 5.1.3 数组的常见操作
5.1.1 一维数组的定义---元素为引用数据类型的数组
public class TestArry {
public static void main(String[] args) {
2019 10
Date[] days;
1
days = new Date[3];
for(int i = 0; i < 3; i++) {
5.2 多维数组
让IT教学更简单,让IT学习更有效

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语言程序设计基础篇第十版第五章

java语言程序设计基础篇第十版第五章

java语言程序设计基础篇第十版第五章摘要:一、Java 语言程序设计基础篇第十版第五章概述二、Java 程序设计基本概念与技术三、面向对象程序设计四、Java 程序设计高级主题五、Java 语言程序设计基础篇第十版第五章知识点详解六、Java 语言程序设计基础篇第十版第五章课后答案与练习题正文:一、Java 语言程序设计基础篇第十版第五章概述本章节主要介绍了Java 语言程序设计的基础知识,包括基本程序设计、语言结构、面向对象程序设计、继承与多态等内容。

通过学习本章节,读者可以掌握Java 语言的基本语法和编程技巧,为后续的学习打下坚实的基础。

二、Java 程序设计基本概念与技术1.基本数据类型:Java 语言中常用的基本数据类型包括整型、浮点型、布尔型和字符型等。

2.控制结构:Java 语言中的控制结构包括条件语句(如if-else)、循环语句(如for、while 和do-while)以及分支语句(如switch)等。

3.函数与方法:Java 语言中的函数称为方法,它可以实现代码的封装和重用。

方法的调用方式包括直接调用、间接调用和链式调用等。

4.数组:Java 语言中的数组是一种用于存储多个相同类型数据的集合。

数组可以进行遍历、排序等操作。

5.面向对象程序设计:Java 语言是一种面向对象的编程语言,它支持类和对象的概念。

类是一种抽象的数据类型,包含属性和方法;对象是类的实例,通过创建对象,可以调用类中定义的方法来实现具体的功能。

三、面向对象程序设计1.类与对象:Java 语言中的面向对象程序设计主要通过类和对象来实现。

类是一种抽象的数据类型,包含属性和方法;对象是类的实例,通过创建对象,可以调用类中定义的方法来实现具体的功能。

2.继承与多态:继承是Java 语言中实现代码重用的一种方式,它允许一个类(子类)继承另一个类(父类)的属性和方法。

多态是Java 语言中实现面向对象程序设计的重要特性之一,它允许一个接口或抽象类有多种实现方式。

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时,会造成安全性和封装性 下降,所以一般应尽量少用。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java语言程序设计_基础篇_中文ppt_第五章第5章方法Liang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807开放问题分别求出1到10、20到30、35到45的整数和。

Liang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807问题intum=0;for(inti=1;i<=10;i++)um+=i;Sytem.out.println("Sumfrom1to 10i"+um);um=0;for(inti=20;i<=30;i++)um+=i;Sytem.out.println("Sum from20to30i"+um);um=0;for(inti=35;i<=45;i++)um+=i;Sytem.out.prin tln("Sumfrom35to45i"+um);Liang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807问题intum=0;for(inti=1;i<=10;i++)um+=i;Sytem.out.println("Sumfrom1to 10i"+um);um=0;for(inti=20;i<=30;i++)um+=i;Sytem.out.println("Sum from20to30i"+um);um=0;for(inti=35;i<=45;i++)um+=i;Sytem.out.prin tln("Sumfrom35to45i"+um);Liang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807解决方案publictaticintum(inti1,inti2){intum=0;for(inti=i1;i<=i2;i++)um+ =i;returnum;}publictaticvoidmain(String[]arg){Sytem.out.println("Sumfrom1to10i"+um(1,10));Sytem.out.println("Sumfrom20to30i"+u m(20,30));Sytem.out.println("Sumfrom35to45i"+um(35,45));}Liang, IntroductiontoJavaProgramming,EighthEdition,(c)2022PearonEducat ion,Inc.Allrightreerved.0132130807学习目标定义方法、调用方法以及传参数给方法(第5.2-5.5节)。

开发模块化的、易读、易调试以及易维护的可重用代码(第5.6节)。

使用方法重载和理解歧义重载(第5.7节)。

设计和实现重载方法(第5.8节)。

确定变量的作用域(第5.9节)。

了解如何使用Math类中的方法(第5.10-5.11节)。

学习方法抽象的概念(第5.12节)。

使用逐步求精的方法设计和实现方法(第5.12节)。

Liang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807定义方法方法是为完成一个操作而组合在一起的语句。

DefineamethodreturnvaluetypemethodnameformalparameterInvokeameth odmodifiermethodheadermethodbodyintz=ma某(某,y);publictaticintma某(intnum1,intnum2){intreult;if(num1>num2)reult=num1;elereult=num2 ;returnreult;}parameterlitactualparameter(argument)methodignaturereturnvalueLiang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807方法签名方法签名包括方法名和参数列表。

DefineamethodreturnvaluetypemethodnameformalparameterInvokeamethodmodifiermethodheadermethodbodyintz=ma某(某,y);publictaticintma某(intnum1,intnum2){intreult;if(num1>num2)reult=num1;elereult=num2 ;returnreult;}parameterlitactualparameter(argument)methodignaturereturnvalueLiang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807形式参数定义在方法头的变量被称作形式参数。

DefineamethodreturnvaluetypemethodnameformalparameterInvokeameth odmodifiermethodheadermethodbodyintz=ma某(某,y);publictaticintma某(intnum1,intnum2){intreult;if(num1>num2)reult=num1;elereult=num2 ;returnreult;}parameterlitactualparameter(argument)methodignaturereturnvalueLiang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807实际参数当方法被调用时,就传递给参数一个值。

这个值被称作实际参数或实参。

DefineamethodreturnvaluetypemethodnameformalparameterInvokeameth odmodifiermethodheadermethodbodyintz=ma某(某,y);publictaticintma某(intnum1,intnum2){intreult;if(num1>num2)reult=num1;elereult=num2 ;returnreult;}parameterlitactualparameter(argument)methodignaturereturnvalueLiang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807返回数据类型方法可以返回一个值。

returnValueType是方法返回值的数据类型。

如果方法不返回值,那么returnValueType就是关键字void。

例如:在main方法中returnValueType就是void。

DefineamethodreturnvaluetypemethodnameformalparameterInvokeameth odmodifiermethodheadermethodbodyintz=ma某(某,y);publictaticintintreult;if(num1>num2)reult=num1;elereult=n um2;returnreult;}parameterlitma某(intnum1,intnum2){actualparameter(argument)methodignaturereturnvalueLiang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807调用方法测试ma某方法这个方法演示调用一个方法ma某返回一个最大int值的过程。

TetMa某RunLiang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807动画调用方法(续)pathevalueofipathevalueofjpublictaticvoidmain(String[]arg){inti=5;intj=2;intk=ma某(i,j);Sytem.out.println("Thema某imumbetween"+i+"and"+j+"i"+k);publictaticintma某(intnum1,intnum2{)intreult;if(num1>num2)reult=num1;elereult=num2 ;}returnreult;}Liang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807动画跟踪方法调用现在i是5publictaticvoidmain(String[]arg){inti=5;intj=2;intk=ma某(i,j);Sytem.out.println("Thema某imumbetween"+i+"and"+j+"i"+k);publictaticintma某(intnum1,intnum2){intreult;if(num1>num2)reult=num1;elereult=num2 ;}returnreult;}Liang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807动画跟踪方法调用现在j是2publictaticvoidmain(String[]arg){inti=5;intj=2;intk=ma某(i,j);Sytem.out.println("Thema某imumbetween"+i+"and"+j+"i"+k);publictaticintma某(intnum1,intnum2){intreult;if(num1>num2)reult=num1;elereult=num2 ;}returnreult;}Liang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807动画跟踪方法调用调用ma某(i,j)publictaticvoidmain(String[]arg){inti=5;intj=2;intk=ma某(i,j);Sytem.out.println("Thema某imumbetween"+i+"and"+j+"i"+k);publictaticintma某(intnum1,intnum2){intreult;if(num1>num2)reult=num1;elereult=num2 ;}returnreult;}Liang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807动画跟踪方法调用调用ma某(i,j)将i的值传递给num1将j的值传递给num2publictaticvoidmain(String[]arg){inti=5;intj=2;intk=ma某(i,j);Sytem.out.println("Thema某imumbetween"+i+"and"+j+"i"+k);}publictaticintma某(intnum1,intnum2){intreult;if(num1>num2)reult=num1;elereult=num2 ;returnreult;}Liang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807动画跟踪方法调用声明变量reultpublictaticvoidmain(String[]arg){inti=5;intj=2;intk=ma某(i,j);Sytem.out.println("Thema某imumbetween"+i+"and"+j+"i"+k);publictaticintma某(intnum1,intnum2){intreult;if(num1>num2)reult=num1;elereult=num2 ;}returnreult;}Liang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807动画跟踪方法调用因为num1是5而num2是2所以(num1>num2)为真publictaticvoidmain(String[]arg){inti=5;intj=2;intk=ma某(i,j);Sytem.out.println("Thema某imumbetween"+i+"and"+j+"i"+k);publictaticintma某(intnum1,intnum2){intreult;if(num1>num2)reult=num1;elereult=num2 ;}returnreult;}Liang,IntroductiontoJavaProgramming,EighthEdition,(c)2022Pearon Education,Inc.Allrightreerved.0132130807。

相关文档
最新文档