武汉大学java课件 类与对象
- 格式:ppt
- 大小:307.00 KB
- 文档页数:57


精品教学课件设计 | Excellent teaching plan
JAVA语言程序设计
JAVA程序设计讲义模块三--类和对象
一、教学章节
模块三 类和对象
二、教学知识点
1:类
2:对象
3:封装
4:对象与类之间的关系
5:定义和使用类的方法
6:变量的作用域
三、教学目的和要求
任务一:理解类的概念、掌握类的创建
任务二:理解对象的概念、掌握对象的创建
任务三:理解对象和类之间的关系
任务四:掌握变量的作用域
任务五:掌握this关键字和static关键字
任务六:掌握封装的特性,掌握封装的使用
四、主要仪器设备
1、笔记本电脑及相应的Windows Operating Systems.
2、已安装的JDK7.0和jcreator或MyEclipse软件。
五、教学内容
任务一:理解类的概念、掌握类的创建
1:面向对象的三大特征
(1)封装(Encapsulation)
对外部看不见
(2)继承(Inheritance)
扩展类的功能
(3)多态(Polymorphism)
方法的重载
方法的多态性 精品教学课件设计 | Excellent teaching plan
封装:对外部不可见。保护类中的操作不被外部直接访问。
继承:你老子有100000000000000000000000000000000,之后将这些资金留给你。
20000000000000000000000或者10000000000000000000000
多态:之前学习的方法重载:不同的方法名称根据传入的参数类型或个数不同调用的方法也不同
多态是在整个java中最重要的概念,而且一个好的面向对象设计中肯定要大量的使用多态性
实际上最早的面向对象语言是有smalltalk提出的,实际上java只是实现了所有面向对象语言所应该具备的各个功能,当然现在的面向对象的语言也不例外。
java中的类与对象
java中的类和对象
类和对象属于面向对象的基本概念,在开发过程中,需要掌握了对象和类的基本思想过后才明白如何进行OO设计,Java本身是纯面向对象的语言,这篇文章的主要目的是针对Java里面一些关于类和对象的基本操作进行简单的概述。
首先要了解JIT是Just in time,即时编译技术的缩写,使用该技术,能够加速Java程序的执行速度。一般情况下,我们写出来的Java源代码通常使用javac编译称为java字节码,JVM通过解释字节码将其翻译成机器可以识别的机器指令,然后逐条读取和翻译。但是使用解释执行的执行速度比可执行的二进制字节码要缓慢,为了提高其执行速度,就引入了JIT技术。JIT在运行的时候,会把翻译过的机器码进行指令缓存,以准备下次调用,理论上讲,使用JIT技术,速度可以接近于以前的纯编译技术。JIT执行原理:当JIT编译启用的时候【默认是启用的】,JVM会读取.class文件,将该文件发给JIT编译器,JIT编译器会将该字节码编译称为本机机器码,然后将编译好的机器码进行指令缓存,当下一次遇到二进制字节码的时候,JIT运行时会去判断该指令是否已经缓存,如果缓存过该指令,就直接从指令缓存里面读取对应的机器码,然后进行翻译执行,若没有缓存过的机器指令还是按照原来的执行步骤进行。根据上边的原理,JIT编译器会针对每条字节码进行编译,有时候会出现编译过程负载过重,为了避免这样的情况,JVM会选择性地去编译字节码,目前的JDK里面实现的JIT技术仅仅针对经常执行的字节码进行编译。虽然JIT可以提高代码执行的速度,但是程序员在写程序的过程不能依赖JIT,最终执行的速度不仅仅由JVM本身决定,大部分情况还是取决于代码本身的结构,如果代码本身结构不够好,有可能JIT 会减低代码执行速度。使用Java语言特性让JIT实现运行时inlining:写过程序的程序员都知道,内联在编译器编译代码过程的速度是很快的,而Java语言本身不像C++一样直接可以使用inline关键字来进行内联操作,但是Java有个技巧可以实现对应的内联候选操作。如果要让Java里面的函数称为inlining的候选者,必须声明为private、static或final。这种函数的速度很快原因根JVM编译Java代码的过程有关,这样的函数在JVM里面可以在编译期被静态决议,而不是动态决议。使用函数体替换函数调用会使得代码执行更快,但是如果使用了大量的这种inlining方式,会造成代码的体积膨胀,所以一般情况下我们可以在写代码的过程考虑针对小函数使用inlining。Java编译器的JIT原始版本是没有inlining的能力的,但是针对新版本的JVM,如果一个函数定义为了static、final或private,则函数本体将会inlining化,这样就可以在不明显体积的情况下改善执行效率。这样的代码针对Java编译器本身而言是不会出现inlining化操作的,但是针对目前大部分JITs而言,就可以在运行时被inlining化,并且可以显著提高代码的性能,其效率倍率估计在3倍左右。inline函数仅仅在这个函数被多次调用的时候,才能感觉到性能的显著提升,这个道理很简单,因为inlining 化的函数被inline过后,就不需要再负担函数调用的开销,调用次数多了实际上不是没有消耗系统资源,只是节省了更多的系统资源,整体上讲性能会有显著提升。
L3 《类与对象》上机手册
1. 内容回顾(3-5分钟)
回顾本讲内容?不要照搬ppt中的课程目标,应该体现自己的水平
1. 面向对象编程有什么特点?
2. 类与对象的关系什么?
3. 类的对象创建与内存分配情况?
4. equals和 == 在对象比较中的区别
5. 常量与类变量,实例变量的区别
6. 什么叫方法的重载?有什么特点
7. 构造器是否可以重载?构造器的作用是什么?
8. this代表什么意思?
9. java中包的作用是什么?包名的定义有什么特点?
2. 上机目标
列出本讲通过上机应该掌握的内容,达到什么要求,不要照搬ppt中的大纲
1. 掌握如何通过java程序来创建一个类
2. 掌握java类中变量作用范围
3. 掌握如何调用类中的方法及其方法重载的实现
4. 掌握java中包对访问限制的影响
3. 上机任务
列出本讲的所有上机题目,包括指导练习、课堂练习、课外练习
1. 创建Trapezia类用来设置梯形的底与高,并给出求面积的方法(30分钟)
2. 定义TestScope类,并定义方法与局部变量,测试变量的作用范围(20分钟)
3. 根据给出的程序的实现意图,写出一个通用的方法,并对该方法进行重载,根据传递参数的不同调用不同的方法(30分钟)
4. 修改3中的程序代码,要求定义个方法getArea,求出三角形的面积,并实现方法的重载(20分钟)
5. “abc cdf efj ww”字符串中间的空格不固定。现要求把它们分成一个字符串数组a[1]=abc,a[2]=cdf,a[3]=efj,a[4]=ww(20分钟)
6. 编写两个类:A和B 。 类A创建的对象可以计算两个正整数的最大公约数,类B创建的对象可以计算两个正整数的最小公倍数。
7. 编写Book . java ,定义一个类Book,具有以下属性和方法。
4. 指导练习
带领学员完成的练习,如安装配置、知识点练习、重点难点
一、 类和对象
1.1 面向对象与面向过程的区别
1.面向过程
采用面向过程必须了解整个过程,每个步骤都有因果关系,每个因果关系都构成了一个步骤,多个步骤就构成了一个系统,因为存在因果关系每个步骤很难分离,非常紧密,耦合度高,当任何一步骤出现问题,将会影响到所有的系统。如:采用面向过程生产电脑,那么他不会分CPU、主板和硬盘,它会按照电脑的工作流程一次成型。
2.面向对象
面向对象对会将现实世界分割成不同的单元(对象),实现各个对象,如果完成某个功能,只需要将各个对象协作起来就可以。
1.2 面向对象的三大特征
1. 封装
2. 继承
3. 多态
1.3 类与对象的概念
类是对具有共性事物的抽象描述,是在概念上的一个定义,那么如何发现类呢?通常根据名词(概念)来发现类,如在成绩管理系统中:学生、班级、课程、成绩
学生—张三
班级—Java1059
课程—JavaSE
成绩—张三成绩
以上“张三”、“Java1059”、“JavaSE”和“张三的成绩”他们是具体存在的,称为对象,也叫实例,就是说一个类的具体化(实例化),就是对象或实例。
为什么面向对象成为主流技术,主要就是因为更符合人的思维模式,更容易的分析现实世界,所以在程序设计中也采用了面向对象的技术,从软件的开发的生命周期来看,基于面向对象可以分为三个阶段:
OOA(面向对象的分析) Object-Oriented Analysis
OOD(面向对象的设计) Object-Oriented Design
OOP(面向对象的编程) Object Oriented Programming
Java 就是一个纯面向对象的语言
我们再进一步的展开,首先看看学生:
学生:学号、姓名、性别、地址,班级
班级:班级代码、班级名称
大家看到以上我们分析出来的都是类的属性
接下来采用简易的图形来描述一下,来描述我们的概念
通过以上分析,大家应该了解: