java 教学设计【实用4篇】
【前言导读】此篇优秀范文“java 教学设计【实用4篇】”由阿拉题库网友为您精心整理分享,供您学习参考之用,希望这篇资料对您有所帮助,喜欢就复制下载吧!
《JAVA程序设计》课程教学模式改革的思考【第一篇】
《JAVA程序设计》课程教学模式改革的思考
[摘要]为适应职业教育改革发展需要,针对Java课程的教学做一些思考。在教学方法上做到灌输式教学向导向式教学的改变,并且在授课过程中体现项目驱动的方式,加强实践教学环节的实施和监控,切实做到对java应用能力的培养。
[关键词]java 教学方法 实践教学 应用能力
中图分类号:TP3文献标识码:A 文章编号:1671-7597(2008)1020139-01
Java是1995年由Sun公司组织开发的一种编程语言,其所具备的简单性、跨平台、面向对象、多线程等特点,已经成为当今世界面向对象程序设计的主流。目前,各大高校都开设了《JAVA程序设计》相关课程,考虑到Java 语言的实践性强和开发环境的特殊,结合职业教育改革的发展需要,本人针对该门课程的教学模式改革做了一些思考。
一、传统灌输式教学向导向式教学的转变
在传统的教学过程中,大都是以理论知识灌输和教师为主体,学生学习非常被动。这种方式的教学在很大程度上限制了学生主观能动性的发挥,从而使得课堂气氛沉闷,学生上课走神,最终导致教学效果不理想。随着《国务院关于大力推进职业教育改革与发展的决定》,“以学生为主体,以教师为主导”的新型教育模式被提了出来,这种教育模式要求学校和教师把学生放到应有的学习主体的地位上,充分地发挥教师教导与引导的主动性和学生自主学习的主观能动性,真正达到教学相长,师生互动,寓教于乐,学生自悟与自觉的高水平教育境界,培养德、智、体、美全面发展的具有行动能力和创造能力的高层次社会人才。“互动式教学”、“参与式教学”、“研究型学习”等新的教学方法应运而生。为了培养学生学习兴趣和积极性,切实培养学生使用java语言进行程序开发的能力,所以在教学过程必须打破传统教育教学方式,做好导向式教学。为了更好地体现导向式教学,我将整个教学环节进行了调整,授课过程中更多地增加了提问、小组讨论、实践练习等。例如在讲述java基础语法知识时,我采用与C语言进行对比的方式,列出问题,给出测试题目。引导学生带着问题,自己看书,并通过小测验,加强对理论知识的理解和掌握。
二、项目驱动式方法贯穿整个教学过程
项目驱动教学法作为教育领域中一种比较新的教育教学方法,近年来我国教育界开始吸收并实践这一教学方法。结合职业教育特点和java语言在软件开发中的广泛应用,在此课程的讲授过程中,项目驱动始终贯穿其中。
(一)准备阶段
首先参照企业开发模式将学生划分成小组,确定组长后,由各组组长进行管理。然后根据学生语言基础能力和兴趣,确定企业实际项目。
(二)实施阶段
根据java程序设计大纲所规定的能力单元,将项目切分,渗透到各个相关知识点的讲授中。例如在讲授面向对象基础知识时,有了继承、封装、多态的概念继承,讲到类的定义,就可以要求学生将实际项目中所涉及的各个cla文件创建出来,为后期开发做准备。后面讲授多线程、I/O流、图形界面、网络编程、数据库操作等,在实践练习环节都引入实际项目的分模块开发,从而提高教学的深度和广度,在一定程度上也激发学生的积极性和知识扩展性,充分调动学生兴趣,提高教学质量。
(三)检查阶段
在整个教学过程结束后,一个较完整的项目就开发出来了。对此,小组组长要对各组员的项目结果进行检查,教师要对各小组的项目质量进行检查。工作结果要按照预定的目标来进行自我和相互的检查并判断达到的效果如何。此过程锻炼学生的责任心、质量意识及评估方法。同时,教师除对工作计划以内的内容进行检查外,还应对质量保证情况进行检查。
(四)评估阶段
最后,学生完成工作评定,教师完成最终评估。首先学生自己对所做的工作进行工作评定,包括项目的准备、项目实施过程中解决的各种疑难问题、自己所负模块的效果等各方面进行总结;然后指导教师进行最后的工作总结、成绩评定,并找出差距和改正办法。
三、加强实践教学环节的实施与监控
根据《java程序设计》课程的特点,在授课过程中,着重突出学生动手能力的培养,因此该门课程的理论和实践课时比为1:1,授课地点都在机房。但通过听取其他同事对java课程的讲授和对学过java课程的学生的调查,发现很多教师在授课过程中,虽然加重了实践课时的比例,由于对实践环节的落实和监控力度不够,最终导致学生的动手能力没有得到很大很好的提高和改善。因此在教学过程中一定要切实落实实践教学环节的展开,并在实践教学环节中加强学生实践练习的过程和结果的监控反馈力度。采取分组管理的方式,由教师对组长,组长对小组成员进行监督、控制的方式,切实保证教学实践环节人人参与的目标。最后组长要根据各组实践练习情况写出书面总结报告,教师根据各组情况针对集中存在的问题进行反馈。
四、总结
总之,Java教学一定要围绕提高学生实践应用能力展开,注重面向对象编程思想的培养,真正做到培养符合职业教育要求,符合社会需求的实用性人才。教学过程中注重导向式教学,以项目驱动贯穿整个教学过程,并加强实践教学环节的实施与监控力度,这是本人对Java程序教学的几点思考,希望能够抛砖引玉,最终取得良好的教学效果。
参考文献:
[1]郑莉,计算机入门语言讲什么?[J].计算机教育,2006(07),25-26.[2]朱平,Java程序设计教学[J].湖北教育学院学报,2006,23(02),46-48.[3]孙伟,《Java程序设计》课程的教学改革与实践[J].计算机时代,2005(11),84-86.[4]张孝祥,Java就业培训教程[M].北京:清华大学出版社,2003.[5]张哲,陈桂生,在Java语言教学中实施“项目驱动”教学法的实践探索[J].教育与职业,2007年18期。作者简介:
李桂珍,女,汉族,山东德州人,北京工业大学在职研究生,新疆农业职业技术学院软件技术学院助教,研究方向:软件技术;李欣,北京工业大学工程硕士,在读,助教,软件技术方向。
JAVA(15)总结【第二篇】
JAVA(1-5章)知识总结 第一章初识JAVA
一、什么是程序 1.概念
为了让计算机执行某些操作或者解决某个问题而编写的一系列有序的指令的集合编写程序的工具,计算机语言,java就是其中一种。
发展史
1995年5月23日,Java语言诞生; 1996年1月,第一个诞生;
1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术; 1996年9月,约万个网页应用了JAVA技术来制作; 1997年2月18日,发布;
1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录;
1997年9月,JavaDeveloperConnection社区成员超过十万; 1998年2月,被下载超过2,000,000次; 1998年12月8日,JAVA2企业平台J2EE发布;
1999年6月,SUN公司发布Java的三个版本:标准版、企业版和微型版; 2000年5月8日,发布; 2000年5月29日,发布;
2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机; 2001年9月24日,发布;
2002年2月26日,发布,自此Java的计算能力有了大幅提升;
2004年9月30日18:00PM,发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,更名为Java SE ;
2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名,以取消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME;
2006年12月,SUN公司发布;
2009年4月7日Google App Engine开始支持Java;[8] 2009年04月20日,甲骨文74亿美元收购Sun。取得java的版权; 2010年11月,由于甲骨文对于Java社区的不友善,因此Apache扬言将退出JCP; 2011年7月28日,甲骨文发布的正式版;
2014年3月19日,甲骨文公司发布的正式版。太阳微系统(2010年被甲骨文公司收购
3、java的体系结构:
Java ME-->微型版 适用于手机,无线设备的开发 Java SE-->标准版 使用开发客户端程序 java EE-->企业版 适用服务器端程序
4、java语言的特点
1.面向对象
java是纯面向对象的语言 2.跨平台
针对每个操作系统,java都有特定的虚拟机 jvm java虚拟机 什么是jvm? 运行的过程
字节码-----》类装载器---》字节码验证器---》解析器----》执行 java虚拟机
3、java安全性比较高
4、java是简单化的
5、计算机语言机制
解释型:同声翻译,写一句解释一句 c++ Basic语言
编译型:利用专门的编译器针对特定的系统将源文件一次性编译 C语言
java语言两种同时兼备
java语言先将 java 的源文件编译成。cla 文件,此时可以说是 编译型。在jvm 运行的时候,先将字节码加载到内存中,读出一条指令,解释一条指令,执行一条指令。解释型
6、JDK和JRE JDK Java Development Kit java开发工具包 JRE Java Runtimes Environment java运行时环境
7、java的环境安装:
下载JDK
安装完成:会生成JDK JRE JDK目录:
bin目录:常用的jdk工具 lib目录:类库
include:一些与C链接时用到的文件 :源代码的压缩文件
配置环境变量:
指明java 的安装路径
JAVA_HOME: C:Program _21 可以不设置(有可能你把java 的安装目录改了)指明java虚拟机要用到的类库
CLASS_PATH: %JAVA_HOME%;
C:Program _ 指明系统在任一路径执行java 的命令 PATH %JAVA_HOME%bin
批处理文件:.exe
测试是否配置成功
出现的问题: 找不到无法加载主类
解决办法
在cla_path 中加上。;.表示当前目录。表示上一级目录
8、java的运行机制:
1、编写源文件。java2、编译源文件。cla3、运行 java平台上运行
9:、常见的错误:
1、类名与文件不同
2、引号、分号。10、注释
java注释:
单行注释://dhsajdal 多行注释:/*dsajdksajdksad */ 文档注释:/** dsadada*/ 第二章、JAVA基本语法
1、变量?
电脑使用内存来记忆数据 内存是如何存储的? 会根据不同的数据类型申请不同的内存空间
变量:一个数据存储空间的表示
不同的数据存入 具有不同的内存地址,相互独立的
2、堆栈结构
java中内存分为两种: 一种叫栈内存 堆内存 定义的基本数据类型都是在栈内存中,引用类型的变量 ps: Scanner in = new Scanner();堆内存中存放的是new创建的对象或者是数组
2、数据类型
基本数据类型 8种:
整型 byte short int long 1个字节 2个字节 4个字节 8个字节
1byte = 8b
2~8 2^16 65536 2^32 2^64
-2^7---2^7-1-2^15----2^15-1-2^31---2^31-1-2^63---2^63-1 字符型 char u000 空格
浮点型 float double 4个字节
8个字节 2^32 2^64-2^31---2^31-1-2^63---2^63-1 布尔型 boolean true false
8种数据类型的默认值
整型全部是0,boolean为false
引用数据类型-----------》所有的引用类型的默认值为:null
3、变量的命名规范
1、必须以:$ _ 字母开头
2、不能是用关键字
3、不能有特殊字符
4、首字母最好小写
5、区分大小写
6、驼峰命名 ps: helloWorld
4、数据类型的转换
1、隐式转换(自动类型转换)小转大:去尾巴
2、显式转换(强制类型转换)大转小:长尾巴 int b;float a = 5;b =(int)a;
1)boolean 不能转换成其他类型
2)byte、short、char之间不会互相转换,在计算之前都会转成int byte b= 10;char c = 10;
java运算符
1、算术运算符:+-* / %
2、赋值运算符:= +=-= *= /= ++--int a;a = 10;(a);
a += b;a = a+b;
++ 在前 先+ 再运算 ++ 在后 先运算在+
--在前 先-再运算 ++ 在后 先运算在-ps:
int x = 10;int y = 8;
if((++x>y--)&(--y(y--)){
}
3、关系运算符:>=
4、逻辑运算符:& |!&& || &和&&的区别:
&----》不管boolean值是真还是假,都会把整个表达式执行完 &&---》也叫短路与,一假即为假,表达式不再运行
|和||的区别:
!取反
5、位运算符:& | ^ ~>>>>ps: 9&13
&-----按位与 只要有0那一位就为0 |-----按位或 只要有1那一位就为1 |-----异或 相同为0,不同为1 ~-----取反 +1 取反
9>>3
三目运算符:(表达式)?(表达式1):(表达式2)
(表达式)为boolean类型表达式
如果(表达式)结果为true 执行表达式1 否则 执行表达式2
引用数据类型-----------》所有的引用类型的默认值为:null
第三章、流程控制
控制语句:
1)顺序语句 2)分支语句 3)循环语句
分支语句:
if 和 switch
其中if使用布尔表达式或布尔值作为判断条件来进行分支控制 而switch则用于对整型值或字符串进行匹配,从而实现分支控制
switch(count){
default:
(“罚写代码”);
break;
case 1:
(“去参加夏令营”);
case 2:
(“奖励一个电脑”);
case 3:
(“奖励笔记本”);}
循环
循环语句一般包含4部分:初始化语句、循环条件、循环体、迭代语句 while 初始化语句
int count = 0;循环条件
while(count
(“nihao”+count);
迭代语句
count++;} for 结构
a b c for(int i = 0;i
a----->b------->d------>c---->b----d do{ 循环体
}while(表达式);
while 和 do while的区别 首先,他们都是循环结构。do while 至少会被执行一次
while是先判断在执行 do while是先执行后判断
break continue 以及 return的区别 用在循环中:
break的作用是跳出当前循环
continue的作用跳出本次循环,执行下一次循环,不再执行continue后面的循环体代码
可以用的返回值 结束当前方法
第四章、数组
1.概念 1)数组是用来存储一组相同数据类型的数据
2)在数组中,他的类型是唯一。也就是说在一个数组中,只能存储同一种类型的数据
3)声明一个变量的时候是在内存中开辟一块空间,申明数组就是在内存中申请一串连续的空间
4)数组中保存任意数据类型(基本数据类型、引用数据类型)数组也是一种数据类型-------->引用数据类型
1、数组中的数据称为元素
2、不管有多少个元素。数组只有一个名字,也就是数组名
3、数组中的元素按照顺序排列编号,即下标
4、数组中的元素可以用下标来访问
5、数组有大小,在创建数组的时候就创建了大小,如果超出了数组的范围(xxx) 数组下标越界异常
2.数组的定义:
ps int a[];int[] a;这两种方式仅仅是申明了一个数组变量,所以并没有内存空间来存储数据,此时不能访问这个数组
boolean[] booleanArray;char[] charArray;String[] stringArray;对象数组
Student[] student
数组的创建:
数组名 = new 数组类型[数组的长度];ps a = new int[100];
这个数组的下标 : 0~99 数组的下标:0~数组的长度-1 获取数组的长度: 数组名。length a[0] 表示数组的第一个元素 a[99] 表示第一百个元素
数组的初始化:
分为两种: 静态初始化:
ps: int[] a ={1,2,3,4,5};动态初始化:
ps: int a = new int[5];a[0] = 1;
a[1] = 2;
....a[5] = 6;error: 或者通过循环赋值
数组的应用
1、输入五个人的成绩:求出平均分
2、创建一个数组,求最值
3、排序
(num);系统提供的工具类Arrays 静态方法sort 默认的是升序排列 冒泡排序
4、数组的拷贝
1)将一个数组变量拷贝给另一个数组的变量,这两个数组的变量指向的同一个数组
2)将一个数组指定的元素,拷贝到另一个数组的指定位置,原数组不会发生改变 (src, srcPos, dest, destPos, length)参数一:原数组 参数二:开始下标 参数三:目标数组
参数四:目标数组开始下标 参数五:拷贝的长度
数组的默认值:
基本数据和引用数据类型的默认值是一样的
多维数组: 二维定义:
int[][] a;int[][][] a;
int[][] a = new int[4][];当使用new来创建二维数组的时候,不必指定每一维数组的长度,只需要指定最左边的那个就行
多维数组的初始化: 静态初始化:
int[][] a = {{1,2},{1,2,3},{1,2,3,4}};动态初始化:
int[][] a = new int[3][];a[0] = new int[2];a[1] = new int[3];a[2] = new int[4];
a[0][0] = 1;String字符串 如何使用字符串? 1)定义初始化字符串 2)对字符串进行操作
注意:
String是一个字符串常量,被创建出来之后不能被修改
ps:String name=“aa”;name = name+“aa”;
怎么样实例化一个String对象呢?
1、通过字符串常量
ps: String str = “Hello world!”;
2、通过String类提供的构造方法
ps:String str1 = new String(“Hello world!”);String str5 = new String();定义了一个空字符串
String str5 = new String(bytes, offset, length)将一个byte数组变成一个String字符串
String字符创的应用:
1、字符串的长度
();
2、String
字符创的比较
1)字符串(字符串2);(str2)这个方法的返回值是:boolean 将逐个比较每一个字符(会比较大小写)2)字符串(字符串2);int count = (str2);方法的返回值是int 将逐个比较相同位置上的字符的Unicode码
如果完全相等方法返回0,如果发现不同的地方停止比较,如果比较的字符Unicode码大于被比较的,放回一个整数值,反之为负数 3)字符串(字符串2);忽略大小写的比较
3、字符串的连接
1)使用“+”将多个字符串链接到一起
其他数据类型和字符串以“+” 连接之后会变成一个字符串 2)字符串(字符串2);
4、字符串的其他常用方法:
indexOf----->从前往后取得查找字符串的下标,如果没有这个字符串,返回-1 (“a”, 3);参数二:从第几个下标开始查找
(“a”);从后往前取得查找字符串的下标,如果没有这个字符串,返回-1 (“a”, 3);(2);参数是从第n个下标开始截取,返回值为字符串
(()-3, ()-1);参数为开始位置和结束位置
(“@”);按照某个字符进行分割,返回一个String[] ();把字符串字母变成小写,返回一个新的字符串 ();大
();去掉字符串前后的空格,返回一个新的字符串
(“a”, “1”);替换 参数就是把旧的字符串替换成新的字符串 (“.java”);是否以指定的字符串结尾,返回值是boolean (“ac”); 开头,();把字符串转换成char[] (3);将指定位置上的字符取出
---------------StringBuffer类
和String是相反的。StringBuffer的内容是可以改变 StringBuffer的实例化
StringBuffer sb = new StringBuffer(“aa”);常用方法:
append(“bb”);往缓冲区追加字符串 ();获得长度
(2, “mm”);往指定位置追加数据
();将所有字符前后互换。生成一个新的字符串 (2);将指定位置上的字符取出
StringBuffer是线程安全的在之后出了一个叫StringBuilder类线程不安全 如果不考虑线程问题尽量选择StringBuilder 速度更快 当数据量大的时候选择StringBuilder
();获取系统当前时间
String、StringBuffer、StringBuilder的区别?
String是一个字符串常量,被创建出来之后不能被修改,不存在线程安全问题。如果不考虑线程问题尽量选择StringBuilder 速度更快
当数据量大的时候选择StringBuilder 若数据量不大,而考虑安全性的情况下,选用StringBuffer 第五章、面向对象
面向对象(Object Oriented)把一个问题的处理过程按照构成问题的事物分解成对象,建立对象的目的不是为了完成整个过程中的一个步骤,而是为了描述某个事物 在整个解决问题的过程中的行为。它不是一种编程语言,而是一种编程方法,一种思维方式。它的三大特性:封装、继承、多态。
类
对某一类事物的描述,是抽象的,概念上的定义。对象是实际存在的该类事物的每一个个体,因而也成为实例。
对象
实际的个体。
一、package(包)与import(导入)(一)package的概念
包即是将一些类聚集在一起的一个空间域。(二)包的命名
包的命名中一般包含组织类型、组织名、项目名、类的分类名。一般与域名相反如:;(三)包的作用
就像Windows中使用文件夹给文件分类一样,Java可以使用包将各个类进行分类。
在一个类里面只能有一个package。
注:package必须放在第一句有效代码。(四)import的作用
在一个类中使用另一个类,而两个类又不在同一个包中时,则需要使用import关键字通知计算机导入所需的类。
import语句应该出现在package语句(如果有)之后、类定义之前。导入类名时,需要写出包括包名在内的完整类名。
注:在一个类里面import可以有多个,import在package之后,类名之前。(五)import的两种导入类型机制(1)单类型导入
如:import ;单类型导入仅仅导入import关键字后面的类名所指定的类。(2)按需类型导入
如:import *;它会导入包中所有的类,当然,也包括当前需使用的类。
二、类的封装
(一)概念
封装是面向对象三大特征之一,将对象的属性信息隐藏起来,不准外部程序直接访问。若外部需要访问,则须定义一个公共的方法来访问私有属性(二)访问修饰符(1)访问修饰符
public private protected 还有一个默认的什么都不写(有好的:default)(2)作用
访问修饰符可以修饰成员变量和方法,也可以修饰类。它限制了被修饰者的使用范围。
(3)访问控制级别
public:任何包中的任何类都可以访问,对外公开,访问级别最高。被public修饰的类、方法、属性可以被所有成员访问。private:同一个类中可以访问,不对外公开,类的private成员只能被该类的成员访问,访问级别最低。protected:同一个类,同一个包,子类中可以访问。受保护的,对于子女(子类,可以在其他包中),朋友(同包)来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部cla,protected就变成private。default:同一个类,同一个包中可以访问。(无修饰符符)友好的,类的成员没有访问控制修饰符,只有该类的成员和当前包下其他类的成员可以访问。(三)对属性进行封装
就是将属性私有化,隐藏实现细节。提供公有方法访问私有属性 通过这些公有方法访问私有属性。
三、类的继承
(一)概念
继承也是面向对象的三大特征之一,它是基于现有的类(基类或父类)派生出新的类(派生类或子类)。子类可以有自己特有的方法和属性,也可以在父类方法的基础上去拓展(可以增加新的数据和功能),子类不能选择性地继承父类,子类可以继承父类所有的非私有的属性和方法。
注:子类只可以直接继承一个父类,且父类不能继承子类。(二)语法
访问修饰符(可不加)cla关键字 字类的类名 extends关键字基类的类名,加上后面的一对大括号。如: cla Dog extends Animal{ }(三)作用
继承有效的减少了重复代码。(四)方法的重载与方法的重写(1)方法的重载
⑴前提:在同一个类中。⑵概念:同名不同参。
同名:函数(方法)名相同,参数列表不同。⑶参数列表不同: ①参数类型不同 ②参数个数不同 ③两者都不同(2)方法的重写
⑴前提:必须是在有继承关系的基础上进行,子类重写父类的方法。
⑵概念:如果在子类中定义一个方法,其名称、返回类型及参数列表与父类中方法的名称、返回类型及参数完全一样,那么新方法被称做重写(Overriding)旧方法。方法重写又称方法覆盖。
(五)this和super关键字 ⑴this this表示当前活动对象本身,任何一个活动的对象都有一个默认的this指针指向自己。使用格式:
this.成员变量名; this.成员方法名
this([参数列表]);//构造方法
注:this必须在构造方法的第一句有效代码,且不能在静态中使用 ⑵super super表示当前活动对象的直接父类 使用格式:
super.成员变量名; super.成员方法名
super([参数列表]);//父类的构造方法
注:super必须在构造方法的第一句有效代码,且不能在静态中使用
四、多态
(一)概念
多态,也是面向对象三大特征顾名思义,多种状态。它是指面向对象程序运行时,相同的信息可能会送给多个不同的类型之对象,而系统可依据对象所属类型,引发对应类型的方法,而有不同的行为。Java中的多态
Java引用变量有两个类型:编译时类型和运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。当它们出现不一致时,就可能出现所谓的多态了。
多态体现在继承过程中也就是说子类和父类的相互类型转换。子类转换为父类称为向上转型,在创建对象时,对象既可以作为其本身的类进行引用也可以作为其父类型进行引用。也就是说将一个子类对象直接赋值给一个父类的引用变量,这种我们称为向上转型。
父类转换成子类,与向上类型相对应的这个父类对象作为其子类类型的引用时,这时候我们就说父类转换成子类了。父类转换成子类需要强制类型转换。也叫向下转型。
自动进行类型转换父类型 引用变量名=new 子类型(); 调用的方法是子类重写或继承父类的方法 无法调用子类特有的方法 强制类型转换
子类型 引用变量=new 父类类型();强转后才能访问子类特有的方法 继承关系的类型关系才能向下转型 A-B-C 其中A是父类,B是它的两个子类。B-A-B是可以运行的 B-A-C? 经实践发现:语法上没有问题,运行时会出错。B-A:是把子类B的对象赋值给父类A向上转型 B(A)-C:把父类B转化成子类C 向下转型
子类B是伪装的父类,在编译时没有问题,但是B和C没有继承关系,所以在运行时会出错。
接口(Interface)
implements 一。抽象类 1.概念
用abstract关键字来修饰一个类时,该类叫做抽象类。若使用抽象类,则必须被继承。
抽象类不能被直接实例化,它只能被继承,作为其它类的超类,这一点与最终类(final类)正好相反 2.格式
abstract cla 类名{ abstract void 方法名(){ } } 3.抽象方法
用abstract关键字来修饰一个方法时,该方法叫做抽象方法。抽象方法不能有实现的方法体,它必须被重写,定义了抽象方法的类必须是抽象类
⑴抽象方法必须被重写。⑵抽象方法只有声明,不能有实现。⑶定义了抽象方法的类必须是抽象类
4.作用
很多时候,父类只能明确子类有哪些行为(方法),但是不能准确的知道子类是如何做的。
二、接口 1.概念
只具有抽象方法的抽象类
三、接口的特点
接口不能被类继承(extends),只能被类实现(implements); 一个类可以实现多个接口;
实现接口的为抽象类。类必须实现接口中的所有方法。
在类中实现接口中定义的方法时,不能比接口中定义的方法有更低的访问权限。因此,被实现的接口方法必须用public修饰。格式
访问修饰符 Interface 接口名{ } 接口也可像定义类一样实现继承,但接口只能继承接口,不能继承任何类。接口是多继承的。
访问修饰符 Interface 接口名 extends 父借口名1,父借口名2...{ } 7.接口的成员变量必须被初始化,成员方法只能有声明不能有实现。
四、接口的实现
[修饰符] cla 类名 extends 父类名 implements 接口1, 接口2„{ //实现接口的方法 } 1.接口是可以被“多实现”的,一个类可以实现多个接口;
2.接口的实现不影响类的继承,接口的实现使用implements关键字; 3.接口之间的继承使用extends,而不是implements。
五、抽象类和接口的区别
1.抽象类可以有实现的方法,也可以有抽象方法,接口只有抽象方法 2.职能的区别:抽象类是作为父类有关联性的,而接口是无关联性 3.抽象类可以继承可以实现,接口只能继承接口
4.有抽象方法的类一定是抽象类,抽象类不是必须有抽象方法
5.非抽象子类必须重新抽象父类中的所有的抽象方法,而抽象子类则不必
六、按值传递和按引用传递的区别
值传递:传递的是副本,本身没发生改变
引用传递:传递的是本身,内外改变是一致的(本质就是传递的内存地址)final修饰的类不能被继承,被其修饰的方法不能被重写,被其修饰的变量的值不能被修改,即为常量。
七、内部类
1.概念 定义在其他类内部的类叫做内部类,也叫嵌入类
内部类是指定在另一个类内部的类,它是java中一种非常有用的特性
2.类型
内部类共包括四种类型:非静态内部类、静态内部类、局部内部类、匿名内部类。最初,它看起来就像是一种代码隐藏机制,但是内部类的作用远不止如此,通过内部类,可以访问外部类的所有私有成员,可以使得代码更加优雅清晰,还使得重继承解决方案更加完整等。3.格式
cla关键字类名{ cla关键字类名{
} } 4.成员内部类根据访问权限的不同又可以划分为静态内部类和非静态内部类。
⑴还有一种特殊的内部类叫做匿名内部类,这种内部类比较特殊它仅仅适合被使用一次的类。也就是说在程序运行中仅仅被使用一次即刻消亡。必须继承一个父类或一个借口
⑵非静态内部类:无static修饰的内部类。
⑶静态内部类(类内部类):被static修饰的内部类 ⑷局部内部类:定义在成员方法中的内部类,不能使用static或访问控制符修饰。局部内部类不能用访问控制符来修饰如public、private也不能用static来修饰。同理局部内部类不能在外部类以外的地方使用。对于局部成员而言,无论是局部变量或者是局部内部类他们的上一级程序都是方法或代码块,而不是类。所以局部成员的作用域仅仅是所在的方法或代码块。其他的程序单元也就不能访问到它们。
5.静态内部类的使用
外部类。内部类 类名=new 外部类。内部类();
java 教学案例【第三篇】
案例1 p6
联合编译运行多个JAVA程序
package pa001;
public cla meyhello {
} public static void main(String[] args){
} Hello1 hello1=new Hello1();();Hello2 hello2=new Hello2();();Hello3 hello3=new Hello3();();
public cla Hello1 {
} public void show(){ } (“功能程序1”);
Java Web程序设计(04112560)实验【第四篇】
实验项目七
1、实验项目名称: 监听和过滤
2、实验项目性质:验证性
3、实验要求:必修
4、计划学时数:2学时
5、实验内容:
(1).实现网上书店项目后台管理用户的过滤功能。具体要求如下:
禁止用户非法访问,只有登录成功才能访问后台页面。
没有登录,直接访问后台其他页面,将跳转到登录页面。
(2).在网上书店项目中增加监听功能,当用户登录成功时自动更新数据库中该用户的登录次数。
(3).实现网上书店项目后台图书管理中的修改图书信息功能模块。具体要求如下: 在图书管理页面中,单击“修改图书信息”按钮,对选定的图书进行修改。
一次只能修改一本图书信息。
修改页面中显示图书的原有数据。
图书ISBN不可修改。
(4).实现网上书店项目后台用户管理中的修改用户信息功能模块。具体要求如下: 在用户管理页面页面中,单击“修改用户信息”按钮,对选定的用户信息进行修改。
一次只能修改一个用户信息。
修改页面中显示该用户原有信息。
用户名不可修改。
根据第七章所学内容以及上机实践情况,在实验报告中完成以下问题。
(1).编写一个过滤器,名称为ForceNoCacheFilter,通过使用此过滤器使浏览器不缓存任何页面。在实验报告中给出其中的关键代码。
(2).画图说明Servlet上下文监听器的工作流程。
6、项目需用仪器设备名称: 计算机
7、所需主要元器件及耗材:无
8、实验项目目的和任务:
(1).了解监听器原理及生命周期中的方法。
(2).掌握Servlet上下文监听。掌握HTTP会话监听。了解请求监听。
(3).理解过滤器原理及生命周期。掌握实现一个过滤器的步骤。了解过滤器链。