第4讲 使用类和对象编程(二) 对象 静态变量和静态方法 再谈方法.

Slides:



Advertisements
Similar presentations
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
Advertisements

第3章 使用类和对象编程 软 件 学 院 朱士明 副教授.
第4章 Java中的几个关键字 Java 语言编程技术.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第四章 类与对象.
第3章 面向对象的编程技术.
第四章 类 和 对 象.
第4章 类 和 对 象.
单元二:面向对象程序设计 任务二:借书卡程序设计.
第四章 类、对象和接口.
第三讲 面向对象(上).
配合< Java面向对象程序设计>例子源代码一起使用
四資二甲 第三週作業 物件導向程式設計.
第14章 c++中的代码重用.
在PHP和MYSQL中实现完美的中文显示
类与对象 Java 实用技术4 类与对象
第10讲 Java面向对象编程基础(4) 教学目标 主要内容.
Java 第12讲:static与方法重载 主讲教师:李焱 讲师.
第四章 Java面向对象程序设计.
第8章 类和对象 Java语言是一种纯面向对象的语言,如果要使用Java进行面向对象编程,首先就要建立面向对象思想。
面向对象的概念 构造方法 this和static关键字
第三章 控制结构.
JAVA 面向对象基础知识 主要内容: 1.面向对象基本概念 2.Java的类与对象 3.成员变量与封装 成员方法.
第九章 字符串.
Using C++ The Weird Way Something about c++11 & OOP tricks
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
CHAPTER 9 建構方法 ROBERT.
欢乐玩转单元测试之JUnit 讲师:FREE QQ:
程式設計實作.
第4章 类、对象和接口 4.1 编程语言的几个发展阶段 4.2 类 4.3 对象 4.4 static 关键字 4.5 this 关键字
管理信息结构SMI.
走进编程 程序的顺序结构(二).
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
Java程序设计 第7章 对象和类.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
第七章 操作符重载 胡昊 南京大学计算机系软件所.
第16章 虛擬與多形 16-1 虛擬函數 16-2 純虛擬函數與抽象類別 16-3 多形 16-4 虛擬繼承與虛擬解構子.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++面向对象程序设计 谭浩强编著 授课教师:姬广永 QQ: 学习网站:
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
C#面向对象程序设计 $6 深入理解类.
Aspect Oriented Programming
分裂对象模型 C++ otcl.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
信号量(Semaphore).
第九节 赋值运算符和赋值表达式.
Chapter 18 使用GRASP的对象设计示例.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
辅导课程十五.
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第7章 模板 陈哲 副教授 南京航空航天大学 计算机科学与技术学院.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
JAVA 程式設計與資料結構 第三章 物件的設計.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
Summary
Presentation transcript:

第4讲 使用类和对象编程(二) 对象 静态变量和静态方法 再谈方法

目标 掌握对象的创建与应用 理解静态变量和静态方法 掌握方法重载的概念和使用 理解构造方法的概念 掌握构造方法的简单应用

对象及其创建 对象(object)是以类作为“模板”创建的,类是一种复杂数据类型,是对象定义的前提。类是具有共同特性的实体抽象,而对象又是现实世界中实体的表现。 对象是类的实例化,对象和实例(instance)两个词语通常可以互换。当然,实例也可理解为类的具体实现。 类和对象的关系是一般与个别的关系,可以比作一张楼房的图纸和多幢楼房 例3.1中,定义了类Triangle,但只是一个通用的三角形模型,不能表示某个具体的三角形。而我们在主程序中进行的new操作,就是创建它的一个实例。

对象及其创建 创建对象须使用操作符new 其格式可以有两种: 类名 对象名=new 类名(参数1,参数2,…); Person p1= new Person(); 或者 类名 对象名; 对象名=new 类名(参数1,参数2,…); Person p2; p2=new Person(); 使用new运算符结果是返回新创建的对象的一个引用。

对象的引用 Triangle 数据 d1=8,d2=6,d3=10 方法 setSide(int x,int y,int z) tri1 d1=4,d2=5,d3=7 tri2 一个对象的值总是指向一个对象的引用,对象的引用描述一个对象存储单元的值。一个类可以创建多个对象,在new运算符作用后,每个对象被分配不同的内存空间,有不同的引用。例如, Triangle tri1=new Triangle();  Triangle tri2=new Triangle();  这两条语句创建了tri1和tri2两个对象,如右图所示。 对象也是一个变量,可以在创建时进行初始化,也可以在创建后赋值。

垃圾回收 当对象被创建时,就会在Java虚拟机的堆区中拥有一块内存. 在Java虚拟机的生命周期中,Java程序会陆续地创建多个对象,假如所有的对象都永久占有内存,那么内存有可能很快被消耗,引发内存空间不足的错误。 因此,必须采取一种措施及时回收那些无用对象占用的内存,以保证内存可以被重复利用。

垃圾回收 Java虚拟机提供了一个系统级的垃圾回收器线程,它负责自动回收那些无用对象所占用的内存,这种内存回收的过程被称为垃圾回收(Garbage Collection)。 需要注意的是,一个对象运行时,可能会有一些东西与其相关联。因此,当对象即将被销毁时,有时需要做一些善后处理,Java中用finalize()方法(常称之为终止器)实现这些处理。 protected void finalize() {   // finalization code }

静态变量和静态方法(一) 静态变量是类的特点,不是某个对象具有的。 静态变量存放在内存的一个公共的存储单元中,它将被某个类的所有对象共享,该类的任何对象都可以访问它、修改它。 如果静态变量被修改,它将保持被修改后的内容直到下次被修改为止。 静态变量引用可以使用类名,也可以使用对象名。例如,round为类Triangle的成员变量, static int round=0; Triangle.round=a+b+c;

静态变量和静态方法(二) static int round=0; Triangle.round=a+b+c; 上述语句将round设为静态变量,则类Triangle可直接调用round。而实例变量的引用不能直接使用类名,须通过对象引用。 静态方法的调用也可通过类名直接调用,即不必将类实例化为对象。Math类的方法都是静态方法。例如,方法sqrt()的调用可以使用下面语句, System.out.println(“81的平方根:"+Math.sqrt(81)); 这条语句直接用类名Math调用sqrt( )方法。 实例Ex3_4

静态变量和静态方法(三) 程序分析: Counter.java设计了一个类counter(为方便理解将其看作计数器), 程序Ex3_4.java创建了4次Counter类的对象并依次将它们显示出来,最后通过Counter类名调用了getCount()方法返回被实例化的Counter 对象的数量。

静态变量和静态方法(四) 1.类Counter中定义了静态变量count并被初始化为0,构造方法Counter()功能是自增静态变量count。 2.类Counter中定义了静态方法getCount(),它允许在main()方法中通过类名调用,在Ex3_4.java的倒数第三行用类名Counter调用。 3.主方法中反复调用ob对象,程序的结果显示了count的值为4,说明count的功能的确是记录Counter实例的数量

class Area{ float getArea(float r){ return 3.14*r*r; } double getArea(float x,float y){ return x*y; } float getArea(int x,float y){ double getArea(float x,float y,flaot z){ return (x+y)*z/2; } }

重载方法 在Java程序中,可以创建名字相同,但是参数和返回值不同的多个方法,就是方法重载。对于多个重载方法,到底调用哪个方法,是通过传递给方法的参数来决定的 类Area中,方法getArea()被定义了4次。如果 Area ar=new Area(); int a=3; float s,b=4.0f; s=ar.getArea(a,b); 以上代码调用了第3个方法,返回值为浮点型。 注意:不能 定义名称相同,参数也完全一致的方法,即使返回类型不同。例如,下面的代码是错误的。 public void getArea(int a,int b); public int getArea(int a,int b);

构造方法 构造方法(也称构造器,constructor) 是一种特殊方法,它的名字必须与它所在的类的名字完全相同,并且不返回任何显式数据类型。Java程序中的每个类都有构造方法,用来初始化类的成员变量。用new创建对象时,一定会调用一个构造方法。 每个类都有默认的构造方法(它没有任何参数),通过构造方法,变量被初始化。如果类没有重新定义构造方法,则创建对象时调用默认的构造方法。否则,创建对象时调用自定义的构造方法

构造方法示例 实例Ex3_5 程序的主方法中,Hello hi=new Hello(“China!”);创建一个Hello对象并存储到一个对象变量hi中,且返回该对象的引用,hi是Hello类的一个实例 构造方法的重载 构造方法table()示例实例Ex3_6

本讲小结 类的定义 对象的创建 成员变量和成员方法 类与对象的关系 方法的声明 实例变量(或方法)和静态变量(或方法) 方法重载和构造方法 面向对象的编程方法

作业 P66-6(3)(4)(7)(8),7,8,9