第5章 Java高级特征

合集下载

第5章 Java中的面向对象特性

第5章  Java中的面向对象特性

堆内存 代码区 public class Person { static int id; int age = 20; public static void main(String[] args) {… } } id age
Zhangsan.id
Zhangsan.age lisi.id
lisi.age
例2: 五子棋

面向过程:
1、开始游戏, 2、黑子先走, 3、绘制画面, 4、判断输赢, 5、轮到白子, 6、绘制画面, 7、判断输赢, 8、返回步骤2, 9、输出最后结果。

面向对象:
1、黑白双方 --这两方的行为是一模一样的, 2、棋盘系统 --负责绘制画面, 3、规则系统 --负责判定诸如犯规、输赢等。
a product
1.2 ×× 1.728 ×× 1.2
参数传递方式 值传递方式
方式:方法调用时,为形参分配单元,并将实参的值复制到形参
中;调用结束,形参单元被释放,实参单元仍保留并维持原 值 特点: 形参与实参占用不同的内存单元 单向传递
Person zhangSan=new Person(“张三”,18,“男”);
zhangSan
0xabcd
张三 null
name sex age
0 18
栈内存 实体的内存地址
男 0
堆内存
使用new 运算符和类的构造方法为声明 的对象分配内存,如果类中没有构造方法, 系统会调用默认的构造方法,默认的构造方 法是无参数的。
事万物皆对象”。 对象可以看成是静态属性(成员变量)和动态属 性(方法)的封装体。 类是用来创建同一类型的对象的“模板”,在 一个类中定义了该类对象所应具有的成员变量 以及方法。 移J2SDK提供了很多类供编程人员使用,编程 人员也可定义自己的类。

全国计算机等级考试《二级java语言程序设计》专用教材【考纲分析+考点精讲+真题演练+强化习题】500()

全国计算机等级考试《二级java语言程序设计》专用教材【考纲分析+考点精讲+真题演练+强化习题】500()

全国计算机等级考试《二级Java语言程序设计》专用教材【考纲分析+考点精讲+真题演练+强化习题】最新资料,WORD格式,可编辑修改!目录第一部分公共基础知识........................................................第1章数据结构与算法....................................................考纲分析..............................................................考点精讲..............................................................1.1 算法.......................................................1.2 数据结构的基本概念...........................................1.3 线性表及其顺序存储结构.......................................1.4 栈和队列.....................................................1.5 线性链表.....................................................1.6 树与二叉树...................................................1.7 查找技术.....................................................1.8 排序技术.....................................................强化习题..............................................................第2章程序设计基础......................................................考纲分析..............................................................考点精讲..............................................................2.1 程序设计方法与风格...........................................2.2 结构化程序设计...............................................2.3 面向对象的程序设计...........................................强化习题..............................................................第3章软件工程基础......................................................考纲分析..............................................................考点精讲..............................................................3.1 软件工程基本概念.............................................3.2 结构化分析方法...............................................3.3 结构化设计方法...............................................3.4 软件测试.....................................................3.5 程序的调试...................................................强化习题..............................................................第4章数据库设计基础....................................................考纲分析..............................................................考点精讲..............................................................4.1 数据库系统的基本概念.........................................4.2 数据模型.....................................................4.3 关系代数.....................................................4.4 数据库设计与管理.............................................强化习题.............................................................. 第二部分Java语言程序设计....................................................第1章Java语言概论......................................................考纲分析..............................................................考点精讲..............................................................1.1 Java语言简介.................................................1.2 Java语言面向对象编程.........................................强化习题..............................................................第2章基本数据类型......................................................考纲分析..............................................................考点精讲..............................................................2.1 概述.......................................................2.2 基本数据类型.................................................2.3 引用数据类型.................................................2.4 Java类库中对基本数据类型的对象包装器(wrapper)类 ...........强化习题..............................................................第3章运算符和表达式....................................................考纲分析..............................................................考点精讲..............................................................3.1 概述.......................................................3.2 算术运算符和算术表达式.......................................3.3 关系运算符和关系表达式.......................................3.4 布尔逻辑运算符和布尔逻辑表达式...............................3.5 位运算符和位运算表达式.......................................3.6 赋值运算符和赋值表达式.......................................3.7 条件运算符与条件表达式.......................................3.8 运算符的优先级和复杂表达式...................................3.9 表达式语句...................................................强化习题..............................................................第4章流程控制..........................................................考纲分析..............................................................考点精讲..............................................................4.1 概述.......................................................4.2 分支(选择)语句.............................................4.4 跳转语句.....................................................4.5 循环语句与分支语句的嵌套.....................................4.6 递归.......................................................强化习题.............................................................. 第5章Java的继承、多态、高级类特性和数组 ...............................考纲分析..............................................................考点精讲..............................................................5.1 概述.......................................................5.2 覆盖方法.....................................................5.3 重载方法.....................................................5.4 高级类特性...................................................5.5 内部类.......................................................5.6 数组.......................................................强化习题.............................................................. 第6章异常和断言........................................................考纲分析..............................................................考点精讲..............................................................6.1 概述.......................................................6.2 异常处理类型.................................................6.3 异常处理编程的提醒...........................................6.4 断言.......................................................强化习题.............................................................. 第7章输入输出及文件操作................................................考纲分析..............................................................考点精讲..............................................................7.1 概述.......................................................7.2 文件.......................................................7.3 字节流.......................................................7.4 字符流.......................................................7.5 对象流.......................................................7.6 过滤流.......................................................7.7 管道流.......................................................7.8 不同流的速度比较.............................................7.9 输入输出流和正则表达式.......................................7.10 Java I/O流的其他应用........................................强化习题.............................................................. 第8章线程............................................................考纲分析..............................................................考点精讲..............................................................8.1 概述.......................................................8.3 线程的调度与控制.............................................8.4 线程同步.....................................................8.5 线程状态与生命周期...........................................8.6 线程相关的其他类与方法.......................................强化习题.............................................................. 第9章编写图形用户界面..................................................考纲分析..............................................................考点精讲..............................................................9.1 概述.......................................................9.2 用AWT编写图形用户界面.......................................9.3 AWT事件处理模型..............................................9.4 AWT组件库....................................................9.5 用Swing编写图形用户界面.....................................9.6 Swing组件和容器..............................................9.7 Swing的事件处理机制..........................................强化习题.............................................................. 第10章Applet程序设计...................................................考纲分析..............................................................考点精讲..............................................................10.1 Applet的基本概念............................................10.2 Applet的编写................................................10.3 Applet中的图形化用户界面GUI................................10.4 Applet的多媒体支持..........................................10.5 Applet与工作环境的通信......................................强化习题.............................................................. 第11章集合与泛型.......................................................考纲分析..............................................................考点精讲..............................................................11.1 概述......................................................11.2 集合框架....................................................11.3 简单集合类..................................................11.4 泛型......................................................强化习题.............................................................. 第12章Java SDK 6.0的下载和操作.........................................考纲分析..............................................................考点精讲..............................................................12.1 Java SDK 6.0的下载与安装....................................12.2 Java SDK 6.0的操作命令......................................12.3 Java编程规范................................................强化习题..............................................................第一部分公共基础知识第1章数据结构与算法考纲分析1.算法的基本概念,算法复杂度的概念和意义(时间复杂度与空间复杂度)。

第04,5章-Java的面向对象特性

第04,5章-Java的面向对象特性

6
封装

什么是封装? 封装是把抽象出来的数据和对数据的操作 封装在一起,数据被保护在内部,程序的 其他部分只有通过被授权的操作才能对数 据进行操作 公有数据
私有数据 数据
举例子 Packaging.java
方法 对象A
方法 对象B
7
继承关系(一般和特殊)
8
Java与面向对象




对象是Java程序的核心,在java程序中 “万事万物皆对象”。 对象可以看成静态属性(成员变量)和动态 属性(方法)的封装体 类是用来创建统一类型的对象的“模板”, 在一个类中定义了该类对象所应具有的成 员变量以及方法 J2SDK提供了很多类供编程人员使用,编 程人员也可以自定义自己的类
+显示年龄 () 职员B:职员 对象是属性(成员变量 )和方法的集合。 {一类事物的具 +修改姓名() 姓名 = B ) 体的某一个东西(符合这类事物的具体特征的某个东西 +领取工资() 年龄 = 350 叫对象} 目前工资= 900 类与对象的关系:类可以看成一类对象的模板,对象可 以看成该类的一 个具体实例,瓶子是一个类,某个瓶 子就是对象
3
一个问题

老李养了两只狗,一只黑狗,叫小黑,颜 色黑色,年龄4岁;一只黄狗,叫小黄,颜 色黄色,年龄10岁。要求编写程序,输入 狗的名字,如有这只狗,显示其信息,没4
面向对象编程思想

从现实世界中客观存在的事物出发来构 造软件系统,并在系统的构造中尽可能 运用人类的自然思维方式 面向对象更加强调运用人类在日常的思 维逻辑中经常才赢的思想方法与原则,
0x3a123b hello world! 堆内存
13
成员方法定义

java教程_第5章 数组

java教程_第5章  数组

第5章数组什么是数组?数组在实际程序中起到什么作用?数组用来存储数据,类似数据的缓存,是一组有序列的数据集合。

通过本章的学习,可以了解数组如何进行数据存储,并且结合编程实例,掌握数组的设计和操作。

5.1数组概念的引入本节将介绍数组的一些基本概念。

这些概念有助于在以后的编程过程中,更好的使用数组。

5.1.1实例的引入走进一家运动器材店,会看到很多的体育运动器材,有篮球、排球、足球、羽毛球、乒乓球、高尔夫、滑板、健身器材等等。

如果要为这家店作一个数据库系统,首先要建立一个类似于集合的表格,如下所示。

{篮球,排球,足球,羽毛球,乒乓球,高尔夫,滑板,健身器材}在程序开发中,将这种集合形式经过改装,变成了本章要重点讲述的数组,将上述的例子用数组来表示:运动器材{篮球,排球,足球,羽毛球,乒乓球,高尔夫,滑板,健身器材}5.1.2数组的概念数组是具有相同数据类型的数据的集合,例如上一小节中提到的运动器材集合。

相同的数据类型,意味着数组中每个数据都是同一类型数据,或者属于基本数据类型中相同类型的数据,或者属于对象类型中相同类型的数据。

在生活中,一个班级的学生、一个学校的所有人、一个汽车厂的所有汽车等等,这些都可以形成一个数组。

数组如果按照维数来分,分为一维数组、二维数组、三维数组和多维数组等,每一维代表一个空间的数据。

一维数组代表的就是一维空间的数据,例如自然数从1~10。

{1,2,3,4,5,6,7,8,9,10}二维数组代表的就是二维空间的数据,例如在数学中的坐标。

{(1,2),(3,4),(5,6),(7,8)}这里的每一组数据都代表了二维空间中的x和y的坐标值。

三位数组代表的就是三维空间的数据,所谓三维空间就是指立体空间,例如立体坐标。

{(1,2,3),(2,3,4),(3,4,5),(4,5,6),(5,6,7)}这里的每一组数据都代表了三维空间中的(x,y,z)轴的坐标值。

5.1.3用实例说明数组的用处本节重点是说明数组的优点,可能会遇到后面小节讲述的内容,先不要理会。

Java程序设计精编教程5-8章知识点

Java程序设计精编教程5-8章知识点

b) 如果变量名由多个单词组成,从第 2 个单词开始的每个单词的首字母要大写。
方法
方法的定义包括两部分:方法声明和方法体。一般格式为:
方法声明部分 {
方法体的内容
}
方法声明
方法声明包括返回值类型、方法名和参数。
double getArea() { //返回值类型为 double,无参数。

}
方法的返回值类型可以是 Java 中的任意数据类型。如果一个方法不返回数据,返回值类型必须是 void。
2. 有一个类 Singleton,为该类设计单例模式(该类只能有一个实例,且不能在类的外部 new 对象),只能通过该类 的静态方法 getInstance()获取该类的唯一对象。在主类 Homework2 中测试单例模式的有效性。
b) 在实例方法中,不仅可以调用实例方法,也可以调用类方法。 2) 类名调用类方法
a) 在类方法中,只能调用类方法、操作类变量。 b) 也可以通过对象调用类方法。 c) 如果一个方法不需要操作实例变量就可以实现某种功能,可以考虑将其声明为类方法。(例 5-8) 5.7 方法重载与多态 Java 中有两种多态:重载(overload)和重写(override)。 方法重载(overload):一个类中可以有多个名字相同的方法,但这些方法的参数必须不同,或者参数的个数不同, 或者参数的类型不同。方法的返回值类型与重载无关。
5.8 this 关键字 this 只能出现在实例方法和构造方法(也属于实例方法)中,表示调用该方法的当前对象。 一般情况下,方法中 this.实例变量的 this 可省略、类名.类变量的类名可省略,但当局部变量与成员变量同名时,
this 或类名不能省略。 5.9 包
包是 Java 语言管理类的一种机制,类似于操作系统中的目录,使用包名可以有效区分名字相同的类。 包语句

java的类和对象 第5章(1)

java的类和对象  第5章(1)
29
例题----方法调用测试
public class CircumferenceTester
{ public static void main(String args[])
{ Circle c1 = new Circle(); c1.radius = 50; Circle c2 = new Circle(); c2.radius = 10; double circum1 = c1.circumference(); //调用 double circum2 = c2.circumference(); System.out.println("Circle 1 has circumference " + circum1); System.out.println("Circle 2 has circumference " + circum2);
类的声明(3)
修饰符 可以有多个,用来限定类的使用方式 abstract 指明此类为抽象类,其概念和使用方法将在第6章 介绍。 final 指明此类为终结类,不能用最终类生成子类。
类声明体 数组成员及方法成员 数组成员说明了类的静态属性,而方法成员一般是 对类的静态属性进行一些相应的操作。 初始化体 可以有多个,具体的在5.3节介绍。
21
5.1.2 方法成员的定义及重载
方法成员 定义类的行为 一个对象能够做的事情 我们能够从一个对象取得的信息 可以没有,也可以有多个;一旦在类中声明了方 法,它就成为了类声明的一部分 分为实例方法和类方法
5.1.2 方法成员的定义及重载
声明格式: [访问控制符] [修饰符] 方法返回值类型 方法名([参数表]) { 方法体; }
类的声明——例1(钟表类)

《Java程序设计案例教程》第05章

《Java程序设计案例教程》第05章
▪ 从整体(类)进行实例化,得到个体 的实例(对象)
▪ 对象也称为类的实例
Java程序设计案例教程
幻灯片 4,共35页
4
5.1.2 面向对象的基本特征
❖ 1. 封装性Encapsulation
▪ 封装是把属性和方法包装起来 ▪ 对外隐蔽大部分实现细节,达到对数据访问权的合理控制 ▪ 使程序各部分联系最小,提高了程序的安全性,简化了程序的代码编写
❖ 修饰成员变量和成员方法
▪ 4种均可应用 ▪ 变量通常是private,通过setters()和getters()方法,实现更加细化的控制 ▪ 方法常用public和private两种
❖ 修饰类和接口
▪ 只有public和(default)可用
程序设计
第5章 类与对象
Java程序设计案例教程
目录
5.1 面向对象的基本概念 5.2 类的封装 5.3 成员访问权限 5.4 内部类
2 幻灯片 2,共35页
5.1 面向对象的基本概念
❖ 5.1.1 面向对象的术语 ❖ 1. 对象Object
▪ 对象就是物体,是一个一个的物体,例如学生、猫、自行车 ▪ 对象具有:
❖}
❖}
Java程序设计案例教程
幻灯片 17,共32页
17
5.2 类的封装

❖ (1)声明对象 ❖ 创建对象包括声明对象和实例化对象两个部分,声明对象的格式为:
▪ [变量修饰符] 类名 对象名;
❖ 例如:Circle c; ❖ (2)创建对象 ❖ 声明过的对象不能被引用,它的默认值是null(空),必须使用new关键字创
幻灯片 18,共35页
18
5.2 类的封装
❖ (3)对象的使用 ❖ 引用对象的属性

第5章_JavaBean构件模型

第5章_JavaBean构件模型

通过使用Beans的属性编辑器
使用更复杂Bean定制器
通信
构 Bean之间通过事件互相通信,开发工具可以检测一个
件 概 述
Bean可以接收和引发的事件
持续
使Bean可以存储和恢复其状态
一个Bean的属性被修改以后,可以通过对象的持续化
机制保存下来,并可以在需要的时候恢复
13
访 问
将变量customer与com.ibm.ils.domain.Customer关联
id="customer" scope="session"
type="com.ibm.ils.domain.Customer"
除Customer从session对象(HttpSession)中获取外,
构 件
构件复合组装:源代码级的组装和基于构件对象互 操作性的运行级组装
概 标准化:构件模型的标准化和构件库的标准化 述 软件构架:如何快速、可靠地应用可复用构件系统
进行系统构造的方式,着重于软件系统自身的整体
结构和构件间的互联
5
JavaBean
JavaBeans vs. JavaBean
构 件 概 述
访
/>

name
设置的<jsp:useBean>的'id’
property
期望设置 的property的名字
param
property中要请求的param的名字
value
property中期望设置的的新值
30
JSP JavaBean
<jsp:setProperty>

Java桌面程序开发第5章-使用Swing常用组件

Java桌面程序开发第5章-使用Swing常用组件
教学要求 1.掌握:Swing各种常用组件的使用,包括图形用户界
面所需要的基本组件、选择型组件,菜单等的创建和使用 2.理解:工具栏的创建,对话框的创建和使用
5.1 GUI的基本元素:标签、按钮、文本框
1.JLabel
• JLabel类是一个用来显示文本的类,文本就是一个字符串。在程 序中指定要显示的字符串,但该字符串在运行时不能被用户修改
密码文本框是用来输入密码的文本框。
密码框继承单行文本框,所以密码框只显示单行输入框。 但是,与单行文本框不同的是,密码框输入的文字将不会 正常显示出来,而是使用其它字符代替。
可以通过调用setEchoChar(char c)来更改显示字符。密 码框的作用是防止别人看到所输入的文字信息。
JPasswordField的构造方法:
JCheckBox类继承JToggleButton类,而JToggleButton类 实现一个反选按键,只有按下和释放两种状态。复选框也 有类似功能,只有选择和不选择两种状态,而且复选框可 由多个按钮组成一个组群。
定义它们之间的间隔。 • int getHorizontalAlignment():返回标签内容沿 X 轴的对齐方式。 • int getVerticalAlignment() :返回标签内容沿 Y 轴的对齐方式。 • void setLabelFor(Component c):设置将标签添加到的组件。
区要换行)。
实例
例5-10 使用JTextArea
例5-11 从一个文本区复制选中的文字到另一个文本区
5.3 选择型组件
Java提供了很多的选择型组件,用户可通过单击选定,免 去了输入文本的麻烦。
常用的选项组件有单选框,复选框,列表框,组合列表框 等。

JAVAEE课件 第五章 在JSP页面中使用JavaBean(netbeans)(华北电力大学科技学院)

JAVAEE课件 第五章 在JSP页面中使用JavaBean(netbeans)(华北电力大学科技学院)

自动加入set/get方法 在代码编辑区右键重构封装字段
则netbeans自动为数据成员生成get/set方法
public static void main(String[] args) { package com.jsp; System.out.println("test JavaBean!"); public class Student { Student a=new Student(); private long classno; a.setAge(27); private String name; a.setClassno(1001); private int age; a.setName("mike"); private boolean sex; a.setSex(true); private String major; a.setMajor("computer"); public Student() { System.out.println("the name is "+a.getName()); System.out.println("the major is "+a.getMajor()); } if(a.isSex())System.out.println("it is male"); public String getName() { else System.out.println("it is female"); return name; }//手工添加main,以测试bean } 顶层包::Student public void setName(String name) { -classno:long = name; -name:String } -age:int -sex:boolean public int getAge() { return age; } -major:String public void setAge(int age) { this.age = age; } +Student()() public boolean isSex() { return sex; } //boolean变量的get函数是isXXX +setName()() +getName()() public void setSex(boolean sex) { this.sex = sex; } +setAge()() public String getMajor() { return major; } +getAge()() public void setMajor(String major) { this.major = major;} +isSex()() +setSex()() public long getClassno() { return classno; } +getMajor()() public void setClassno(long classno) { this.classno = classno; } +setMajor()()

Java编程基础及应用(第2版)教学课件第5章 类和对象

Java编程基础及应用(第2版)教学课件第5章 类和对象
变量定义及初始化;〃声明成员变量 [方法修饰字]返回值的数据类型方法名称(参数1,参数 2...)
{ 程序语句! 〃定义成员方法 [return表达式];
} }
7
§5.1.2 类的定义
说明: (1) class关键字,用于定义类。“class类名”是类的声明 部分, 类名必须是合法的Java标识符,通常第一个字母大写 ,能体现类的功能和作用。 (2 )类的修饰字有:[public] > [abstract | final] 、缺省方式 为 friendly。其中,abstract类不能直接产生属于这个类的对 象;final类不能被其他任何类所继承;public类不但可以被同 一程序包中的其他类使用,别的程序包中的类也可以使用; friendly(缺省)类只能被本包中的其他类使用。
一个对象 就要为对象的各个成员变量分配存 储空间,可以通过 引用对象的成员来使用对 象。 -对象数据成员的引用方式如下:
-对象成员方法的引用方式如下:
22
§5.1.3 对象的创建、使用及清除
例5.3定义DogTestl类,创建该类对象dog,使用该对象 并输
岀相应信息。
程序运行结果: dog阿黄的年龄:3,毛发的颜色:黄色 狗在汪汪叫…
(4) 方法不能嵌套,即不能在方法中再声明其他方法。 (5) 同一个类中的方法可以访问该类的成员变量。 (6) 一个类的方法只能访问自己的局部变量。
17
§5.1.2 类的定义
-例5.1定义Dog类,并设置其属性和方法。
在上面的程序屮,Dog类定义了name、age和color三 个属性,分别表示狗的姓名、年龄和毛发颜色,然后 定义了一个bark()方法,表明狗有汪汪叫的能力。
返回值的 类型和访问限制;方法体由括号内的声明部分和语 句部分组成,描述方法的功能。

郎波《Java语言程序设计(第4版)》教学进度表-48学时

郎波《Java语言程序设计(第4版)》教学进度表-48学时
习题5:
6
12
2
第5章Java高级特征:
集合类;
枚举类型;
包装类与自动装箱和拆箱;
注解Annotation;
var局部变量类型推断
实训4:
练习4-3
习题5:
7
13
2
第6章异常处理:
异常的概念;
异常处理方法;
自定义异常类
实训5:
练习5-1
练习5-2
习题6:1-5
14
2
第7章输入/输出:
输入/输出流的概念;
《Java语言程序设计(第4版)》教学进度表(48学时)
课次
学时
计划教学内容
教学内容
实验
习题
1
2
第一章绪论:
面向对象程序设计概述;
Java发展历史与技术体系;
Java的特征
习题1:
1-2
2
2
第一章绪论:
Java语法机制;
Java运行系统;
Java应用;
Java程序示例
实训1:
练习1-1,
练习1-2
习题1:
19
2
第9章Applet编程:
Applet基本概念;
Applet的编写;
Applet中的图形化用户界面GUI
习题9:
1-7
20
2
第10章线程:
线程的概念;
线程的两种构造方法;
线程调度
实训8:
练习8-1
习题10:
1-4,8
21
2
第10章线程:
线程控制;
线程同步
习题10:
6,7
22
2
第10章线程:
线程间的交互;

第5章 Java面向对象编程进阶

第5章  Java面向对象编程进阶

•{

……; //类体:包含属性和方法
•}
• “extends”表明要构造的新类(子类),是从一 个已有的类(父类)衍生出来的。子类中继承了 父类中非private的全部属性和方法,同时还可以 定义新的属性的方法。
5.3.2 覆盖父类中的方法
• 使用继承的过程中,可以实现方法的重载。在第 五章中曾经介绍过,方法重载实现了对同一个方 法名的复用,只是存在于父类和子类之间。当父 类中的一个方法在它的子类中重新获得定义时, 若该方法的方法名、参数、返回值类型均不变, 只有方法体发生了变化时,就称子类的方法重载 了父类方法。
5.3.4 super关键字的使用
• 当子类继承父类后,若要在子类中直接调用父类 的构造方法,就必须使用super(…)语句,但需要 注意以下两点:
• (1)若要在子类构造方法中调用父类构造方法, super(…)语句必须放在子类构造方法中的第一行;
• (2)不能在子类构造方法中同时调用this(…)和 super(…)语句,因为这两条语句都必须位于子类 构造方法中的第一行。
5.5.2 成员变量在接口中的使用
• 2.接口中成员变量的作用 • 接口相当于一份契约,契约具有的属性应该是不
变的,因此接口内只能放置常量。这样做能够保 证实现该接口的任何类都可以访问相同的常量, 不能动态将其值随意进行修改,同时使用声明的 常量也会增强代码的可读性。
5.5.3 方法在接口中的使用
第5章 Java面向对象编程进阶
5.1 内部类和匿名类
• 在此之前,本书介绍的类中,都只是由属性和方 法构成的,而在实际编程中,一个类的内部也可 以包含一个类,并将这个类称之为内部类。在这 一节中,将介绍Java语言中内部类的概念和用法。 这也是Java程序中比较高级的一种用法,还会用 实际的例子来介绍其使用方法。

Java程序设计基础 第5章 教案

Java程序设计基础  第5章  教案
课前组织
做好课前“5分钟”教学管理(多媒体、实训室),做好上课前的各项准备工作(打开电脑、打开课件、打开软件、打开U盘中的素材位置、打开授课计划、教案等),吸引学生注意力。
课程
说明
【课前说明】
本章主要讲解面向对象的知识。首先介绍了Java中包和访问修饰符的概念,之后介绍了类的概念。接着介绍了封装、继承和多态的概念。封装包含两个层面,属性的封装和方法的封装(类也是一种形式的封装),属性的封装是让属性隐藏起来,只能通过特定方式获取和修改,方法的封装则是将方法的实现隐藏起来,将方法名称暴露出去。一个对象可以是多种类型就是多态。本章还介绍了重写和重载,重写是覆盖父类或实现接口中某个方法的方法体,但是方法签名不变,重写使用@Override注解注释;重载是指可以定义多个重名方法,但这些重名方法的方法签名是不同的,也就是说,传入的参数类型或者个数是不相同的。
Java程序设计基础
第5章面向对象
课程名称
Java程序设计基础教程
(慕课版)
项目名称
面向对象
任务名称
面向对象
课时
6
项目性质
□演示性□验证性□设计性√综合性
授课班级
授课日期
授课地点
教学目标
能力目标:
1.具备使用对象的封装、继承和多态解决问题的能力
2.具备使用掌握抽象类和接口解决问题的能力
3.具备使用掌握重写和重载解决问题的能力
总结
评价
通过学习,学生能够掌握Java中包、访问修饰符、类的概念,封装、继承和多态的概念的具体用法。
本节课主要运用案例教学法,通过对面向对象深入理解,掌握封装、继承和多态的基本特点,深入探讨封装、继承和多态的使用方法,通过实例的方法加强重载和重写的理解,达到能够独立熟练运用封装、继承和多态来解决实际问题的能力。教学评价方式以小组为单位,以完成案例的质量为评价标准,形成任务驱动,小组协作,质量与速度并存的课堂评价方式 ,促进学生的自主、创新学习的方式 。

Java 2实用教程第5版_第5章_子类与继承

Java 2实用教程第5版_第5章_子类与继承
1.上转型对象不能操作子类新增的成员变量;不能调用子类新 增的方法。
2.上转型对象可以访问子类继承或隐藏的成员变量,也可以调 用子类继承的方法或子类重写的实例方法。
3. 如果子类重写了父类的某个实例方法后,当用上转型对象调 用这个实例方法时一定是调用了子类重写的实例方法。 例子10 中, monkey 是 People 类型对象的上转 型对象,运行效 果如图5.10。
§5.1 子类与父类
➢ 继承是一种由已有的类创建新类的机制。利用继承, 我们可以先创建一个共有属性的一般类,根据该一般 类再创建具有特殊属性的新类,新类继承一般类的状 态和行为,并根据需要增加它自己的新的状态和行为。 由继承而得到的类称为子类,被继承的类称为父类 (超类)。
➢ Java不支持多重继承(子类只能有一个父类)。
➢ 子类可以通过继承的方法来操作子类未继承的变量和方法 .
例 子 2中 , 子 类 ChinaPeople的 对象调用继承的方法操作未被子类 继承却分配了内存空间的变量。程 序运行效果如图5.3。
5.3.1 子类对象的生成
class AA{
AA(){
System.out.println("上层父类A的构造方法");
例题
4.重写的注意事项
➢ 重写父类的方法时,不允许降低方法的访问权限,但可以提高 访问权限(访问限制修饰符按访问权限从高到低的排列顺序是: public、protected、友好的、private。)
在下面的例子4(Example5_4.java)中,ImportantUniversity是 University类的子类,子类重写了父类的enterRule()方法,运行效 果如图5.5。
5.3.2 关于instanceof运算符

第5章 类的层次结构

第5章 类的层次结构

定义哺乳动物类: class Mammal{ … } 定义狗是一种哺乳动物类: class Dog extends Mammal{ … void run }
程序中说明了如下的一个动物类对象的引用: Mammal m; 程序中创建了一个狗类的实例: Dog dog1 = new Dog(); 如果有如下的赋值: m = dog1; 这就好比说“狗是一种哺乳动物”,因此这种赋值是正确, 或者用下面的方式书写: Mammal m = new Dog();
Java语言程序设计
第5章 类的继承
5.3 类之间的层次结构
引言:

一个子类继承了父类,同时子类还可以 是其他类的父类,这样形成了一个类之 间的继承关系图。
5.3.1 类的层次结构图

类A如果有两个子类AA和AB,类AA如 果有一个子类AAA,类AB如果有一个 子类ABA,它们之间的关系构成图5-4 左边的部分,类似地由B类和其子类构 成了图5-4中间的部分,还可能有其他 类也构成了类似的关系。
子类对象赋给父类对象
注意1:子类对象赋给父类对象时进行自动 类型转换。 注意2:当子类对象赋值给父类对象后,父 类对象除了可以引用自身所在类的成员 外,还能引用和父类同名的成员变量 (父类)和方法(子类)。
观察下面的程序的运行结果:
class Father { int a=1,b=2; void show() { System.out.println(a+" "+b); } } class Son extends Father { int b=3,c=4; void show() { System.out.println(a+" "+b+" "+c); } } class Exp { public static void main(String[] args) { Father fa=new Father(); fa.show(); Son s=new Son(); s.show(); Father fb; fb=s; fb.show(); System.out.println(fb.a+" "+fb.b); //System.out.println(fb.a+" "+fb.b+" "+fb.c); System.out.println(s.a+" "+s.b+" "+s.c); } }

第5章 javz

第5章 javz

第6页
Error类 5.1.1 Error类
Error类及其子类通常用来描述 类及其子类通常用来描述Java运行系统中的内部 类及其子类通常用来描述 运行系统中的内部 错误以及资源耗尽的错误。 错误以及资源耗尽的错误。 Error表示的异常是比较严重,仅靠修改程序本身是不 表示的异常是比较严重, 表示的异常是比较严重 能恢复执行的,被称为致命异常类。 能恢复执行的,被称为致命异常类。 举一个现实中的例子,例如,因施工时偷工减料, 举一个现实中的例子,例如,因施工时偷工减料,导 致学校教学楼坍塌,此时就相当于发生了一个Error异常。 异常。 致学校教学楼坍塌,此时就相当于发生了一个 异常 在大多数情况下,发生该异常时,建议终止程序。 在大多数情况下,发生该异常时,建议终止程序。
第 13 页
5.2.1使用try…catch 5.2.1使用try catch语句 使用try catch语句
语言中, 在Java语言中,对容易发生异常的代码,可通过 语言中 对容易发生异常的代码, try…catch语句捕获。在try语句块中编写可能发生异常的代 语句捕获。 语句块中编写可能发生异常的代 语句捕获 然后在catch语句块中捕获执行这些代码时可能发生的 码,然后在 语句块中捕获执行这些代码时可能发生的 异常。 异常。 一般格式格式为: 一般格式格式为:
异常类含义
将与数组类型不兼容的值赋值给数组元素时抛出的异常 类型强制转换异常类 为找到相应类异常 文件已结束异常类 文件未找到异常类 访问某类被拒绝时抛出的异常 试图通过newInstance()方法创建一个抽象类或抽象接口的实例时 试图通过newInstance()方法创建一个抽象类或抽象接口的实例时 newInstance() 抛出的异常 输入输出异常类 建立元素个数为负数的数组异常类 空指针异常类 字符串转换为数字异常类 字段未找到异常类 方法未找到异常类 小应用程序(Applet)执行浏览器的安全设置禁止的动作时抛出的 小应用程序(Applet)执行浏览器的安全设置禁止的动作时抛出的 (Applet) 异常 操作数据库异常类 字符串索引超出范围异常
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第5章 Java高级特征
版权所有:计算机科学学院
Java语言程序设计

5.2 final关键字
final标记的类不能被继承 final标记的方法不能被子类重写 final标记的变量即是常量,只能被赋值一次 final标记的成员变量必须在声明的同时或构造方法中显式赋值,然后才能 使用 final不允许修饰构造方法、抽象方法和抽象类;
Java语言程序设计 Java语言程序设计

余永武
yyw7467@
授课:余永武
版权所有:计算机科学学院Java语言程序设计 Nhomakorabea
5.1 static 关键字
在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量, 在第一次使用时被初始化,对于该类的所以对象来说,static成员变量只 有一份。 用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传 递给它,所以在static方法中不可访问非static的成员。
interface Figure { Java语言程序设计 double half=0.5,pi=3.14159; void parameter(); void area(); 接口 (interface) }
}
第5章 Java高级特征
版权所有:计算机科学学院
Java语言程序设计 DA, DX { class DD implements public int add(int x, int y) { return x+y; } public int sub(int x, int y) { return x-y; } 接口 (interface) public int mul(int x, int y) { return x*y; } public int div(int x, int y) { return x/y; } public int mod(int x, int y){ return x%y; } 接口的继承 extends } 将多个接口合并为一个新的接口
public interface Runner { public static final int id=1; public abstract void start(); public abstract void run(); public abstract void stop(); }
第5章 Java高级特征
版权所有:计算机科学学院
class DD implements LotsOfColors { Java语言程序设计 public static void main(String args[]) { System.out.println(LotsOfColors.YELLOW); System.out.println(YELLOW); } reference to YELLOW is ambiguous, 接口 (interface) } both variable YELLOW in RainbowColors 接口继承中的命名冲突 and interface BaseColors { variable YELLOW in PrintColors match int RED = 1, GREEN = 2, BLUE = 4; } interface RainbowColors extends BaseColors { int YELLOW = 3, ORANGE = 5, VIOLET = 6; } interface PrintColors extends BaseColors { int YELLOW = 8, CYAN = 16, MAGENTA = 32; } interface LotsOfColors extends RainbowColors, PrintColors { int FUCHSIA = 17, CHARTREUSE = RED+90; 版权所有:计算机科学学院 } 第5章 Java高级特征
第5章 Java高级特征
class ActionCharacter { public void fight() { } }
版权所有:计算机科学学院
Java语言程序设计
class C { 接口 (interface) public int f() { return 4; } } 接口合并时的命名冲突 interface A1 { void f(); } interface A2 { int f(int i); } interface A3 { int f(); }

interface DC { int add(int x, int y); } interface DB extends DC { int sub(int x, int y); } interface DA extends DB { int mul(int x, int y); }
第5章 Java高级特征
版权所有:计算机科学学院
第5章 Java高级特征
版权所有:计算机科学学院
Java语言程序设计

5.4 接口 (interface)




接口是对abstract类的进一步扩展,是抽象方法和常量值定义的集 合 接口中的方法都是未实现的(类似于抽象方法),目的是在实现接口的 类之间建立一种协议 接口中的变量都是常量 定义 [public] interface 接口名 {
第5章 Java高级特征
版权所有:计算机科学学院
Java语言程序设计

5.3 抽象类
抽象方法 只有方法的声明而不提供方法的实现 抽象方法必须加上abstract关键字 包含一个或抽象方法的类称为抽象类。 抽象类必须在声明中加abstract关键字 抽象类不能创建实例对象 抽象类也可有构造方法、普通的成员变量或方法 如果抽象类的子类实现了所有的抽象方法,则可以创建该子类的实例对象, 否则也必须声明为抽象类 一般将抽象类构造方法的访问权限声明为protected
Java语言程序设计

5.4.6 接口与抽象类
接口中的所有方法都是抽象的,而抽象类可以定义带有方法体的不同方法 一个类可以实现多个接口,但只能继承一个抽象父类 接口与实现它的类不构成类的继承体系,接口不是类体系的一部分。不相 关的类也可以实现相同的接口。抽象类一般位于类的顶层
可以通过对象引用或类名(不需要实例化)访问静态成员。 this可以看作是一个类中的变量,它的值是当前对象的引用
第5章 Java高级特征
版权所有:计算机科学学院
Java语言程序设计

静态初始化程序 在一个类中,不属于任何方法体并且以static关键字修饰的语句块, 称为静态语句块 static{…} 静态语句块在加载该类时执行且只执行一次。
成员变量; 方法声明;
}

一个类符合某个或一组接口,利用implements
第5章 Java高级特征
版权所有:计算机科学学院
Java语言程序设计

接口 (interface)


接口名修饰 public: 无任何访问限制 无修饰: 仅限于本包中 接口变量必须都是“public static final”的,而接口中定义的方法必须 是 “public abstract”的,因而这些修饰符都可以省略
public interface Runner { int id=1; void start(); void run(); void stop(); }
版权所有:计算机科学学院
class Circle implements Figure { double x, y, r; Circle(double u, double v, double m) { x=u; y=v; r=m; } public void parameter() { System.out.println(x+“ “+y+“ “+r); } class Triangle implements Figure { public void area() 接口方法 double b, h; 无修饰 { System.out.println(pi*r*r); } Triangle (double u, double v) { } 但在实现接口方法的类中,修饰符为public b = u; h = v; Triangle t = new Triangle(2, 3); } Circle c = new Circle(4, 5, 6); public void parameter() { Figure[] f = {t, c}; System.out.println(b + “ “ + h); for (int i =0; i < f.length; i++) { } public void area() f[i].parameter(); { System.out.println(half*h*b); } f[i].area(); }
第5章 Java高级特征
interface DY { int div(int x, int y); } interface DX extends DY { int mod(int x, int y); }
版权所有:计算机科学学院
Java语言程序设计

class Hero extends ActionCharacter implements CanFight, CanSwim, CanFly { 接口 (interface) public void swim() { } public void fly() { } 利用接口实现多重继承(Multiple inheritance) class extends 父类 implements 接口 } interface CanFight { void fight(); } interface CanSwim { void swim(); } interface CanFly { void fly(); }
相关文档
最新文档