西南科技大学网络教育系列课程 高级语程序设计(Java) 第四章 类与对象.

Slides:



Advertisements
Similar presentations
网络应用程序设计 2014 JavaBean. JavaBean 及其属性 JavaBean 就是一种 Java 的组件技术 JavaBean 是 Java 类 JavaBean 通过约定的方法名实现属性功能 简单属性 void setXxx(Type value) Type getXxx() boolean.
Advertisements

主要内容 Java 的常用包 Java 的常用包 “ == ” 和 “ equals ” 的用法 “ == ” 和 “ equals ” 的用法 基本数据类型与引用类型 基本数据类型与引用类型 String 和 StringBuffer String 和 StringBuffer 对象的克隆( clone.
第3章 使用类和对象编程 软 件 学 院 朱士明 副教授.
项目三 Java面向对象程序设计 任务一 了解面向对象程序设计的基本概念 任务二 掌握类的使用方法 任务三 熟悉对象的创建与使用方法
第4章 Java中的几个关键字 Java 语言编程技术.
第3-2章 类与 对象 Java类的特性 教学内容: 类的私有成员与公共成员 方法的重载 构造方法 实例成员与静态成员 重点: 重载 难点:
第3章 面向对象的编程技术.
第四章 类 和 对 象.
单元二:面向对象程序设计 任务二:借书卡程序设计.
第四章 类、对象和接口.
第四章 对象与类 掌握面向对象程序设计语言的特点 理解对象、类,类和对象的关系 掌握类,成员变量,方法的定义 掌握构造方法的定义
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
第3章 面向对象程序设计.
配合< Java面向对象程序设计>例子源代码一起使用
JAVA 编 程 技 术 主编 贾振华 2010年1月.
Java的面向对象程序设计.
本章导读 类声明和类体及其构成 第4章 类与对象 本章导读 import语句 构造方法与对象的创建 访问权限 对象的引用与实体
项目6 通用堆栈.
四資二甲 第三週作業 物件導向程式設計.
第4章 类与对象 本章导读 0. 面向对象编程 1. 类声明和类体 2. 类体的构成 3. 构造方法与对象的创建 4. 对象的引用与实体
第二章 JAVA语言基础.
Java面向对象程序设计 第19讲(期末复习一)
Ch07 介面與多重繼承 物件導向程式設計(II).
第五章 Java面向对象编程基础 类:现实世界中实体的抽象集合。 5.1定义类 定义类的过程就是定义类的属性和服务的过程;
第14章 c++中的代码重用.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
类与对象 Java 实用技术4 类与对象
第10讲 Java面向对象编程基础(4) 教学目标 主要内容.
JAVA程序设计 (03) JAVA Programming
第4章 类、对象和接口 4.1 编程语言的几个发展阶段 4.11 abstract 类和abstract方法 4.2 类
第四章 Java面向对象程序设计.
第三章 控制结构.
第5章 Java中类、对象、接口 及包的概念 5.1 类的基本概念 5.2 类的继承概念 5.3 抽象类和接口 5.4 包.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
程式設計實作.
CH09 套件 物件導向程式設計(II).
第4章 类、对象和接口 4.1 编程语言的几个发展阶段 4.2 类 4.3 对象 4.4 static 关键字 4.5 this 关键字
管理信息结构SMI.
Java程序设计 第9章 继承和多态.
辅导课程六.
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
第二章 Java语言基础.
Ch02-基礎語法.
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
JAVA 编 程 技 术 主编 贾振华 2010年1月.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第二章Java基本程序设计.
$9 泛型基础.
C#面向对象程序设计 $6 深入理解类.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
本节内容 类成员的访问控制 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第二章 Java语法基础.
第九节 赋值运算符和赋值表达式.
Review 1~3.
辅导课程十五.
第二章 Java基本语法 讲师:复凡.
第6章 面向对象的高级特征 学习目标 本章要点 上机练习 习 题.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第二章 Java基础语法 北京传智播客教育
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第二章 简单数据类型 §2.1 数据类型概述 §2.2 变量和常量 §2.3 简单数据类型 §2.4 简单数据类型的相互转换
Summary
Presentation transcript:

西南科技大学网络教育系列课程 高级语程序设计(Java) 第四章 类与对象

类声明和类体 类是组成Java程序的基本要素。 类是具有共同属性和行为的对象的抽象,类可以定义为数据和方法的集合。 类 对象 封装的实体=数据+方法 抽象 实例化 类是组成Java程序的基本要素。 类是具有共同属性和行为的对象的抽象,类可以定义为数据和方法的集合。

类由两部分构成:类声明和类体。 基本格式为: class 类名 { 类体的内容…… } 合法的Java标识符 关键字 类的声明 类体

给类命名时,需要良好命名习惯 类的名字不能是Java中的关键字,要符合标识符规定。 如果类名使用拉丁字母,那么名字的首字母使用大写字母,如Hello,Time,People等。 类名最好容易识别、见名知意,当类名由几个“单词”复合而成时,每个单词的首写字母使用大写,如BeijingTime,AmericanGame,HelloChina等。

类体的构成 成员变量:通过变量声明定义的变量,用来刻画类创建的对象的属性。 成员方法 构造方法:类创建对象时使用,用来给出类所创建的对象的初始状态。 普通方法:供对象调用,体现对象具有的某种功能。

例:一个梯形类的定义 class Echelon { float up,down,hight,laderArea; float Area() 成员变量,用来刻画属性 例:一个梯形类的定义 class Echelon { float up,down,hight,laderArea; float Area() laderArea = (up+down)*hight/2; return laderArea; } void changeup(float h) hight = h; 成员方法,用来刻画功能

构造方法与对象的创建 构造方法 类创建对象时需使用构造方法,以便给类所创建的对象一个合理的初始状态。 构造方法的特点 名字必须与它所在的类的名字完全相同 没有任何返回值 一个类中可以有若干个构造方法,但这些构造方法的参数必须不同(即或者是参数的个数不同,或者是参数的类型不同)

不能写成: char names = thename; int heights = theheight; class People{ char name, sex; int age,height; People(){ } People(char thename,int theheight){ name = thename; height = theheight; } int getAge(){ return height; 不能写成: char names = thename; int heights = theheight;

对象的创建和使用 对象的创建 对象的声明: 类名 对象名; 例如: People zhang; 分配内存空间:对象名 = new 类名(参数); zhang = new People(‘张三’,170); 使用new运算符和类的构造方法为已声明的对象分配内存(包括分配成员变量);如果类中没有构造方法,系统会调用默认的构造方法,默认的构造方法是无参数的。 对象的声明和内存分配可以由一个语句完成。 例如:People zhang = new People(‘张三’,170);

对象被创建时,系统将给对象分配内存空间,而且,不同的对象所分配到的空间不一样。 分配到内存空间后的对象 height name 170 张三 0xAA11 zhang 分配到内存空间后的对象 height name 172 李四 0xBB22 li 使用创建好的对象 通过使用运算符“.”,对象可以实现对自己的变量访问和方法的调用。

对象的引用 当创建一个对象时,成员变量被分配内存空间,而对象中存放着引用,以确保这些变量由该对象操作使用。 如果两个对象有相同的引用,那么就享有相同的变量的内存空间。 People zhang = new People(‘张三’,170); People li = new People(‘李四’,172); Zhang = li; height name 172 李四 0xBB22 li 0xAA11 zhang 这时,zhang原来的变量空间将被释放

成员变量 Java类中有两种成员变量 静态变量(或类变量):用关键字static修饰 实例变量:无关键字static修饰 class A{ float x; static int y; } 静态变量和实例变量的区别 某个类的不同对象的实例变量被分配不同的内存空间 某个类的不同对象共享静态变量的内存空间,也就是说这个类的一个静态变量只有一个内存空间。 y 0xBB22 A2 0xAA11 A1

成员变量与局部变量 方法体外所定义的变量为成员变量。 方法体中所定义的变量为局部变量。 变量可以是任何数据类型,包括对象。 主要区别:作用域不同 成员变量的作用域是整个类; 局部变量的作用域是该方法体内。

如果成员变量与局部变量名字相同,则成员变量被屏蔽,即这个成员变量在这个方法内暂时失效;如果要在该方法中使用成员变量,必须使用关键字this。 class Triangle{ float sideA, sideB, lengthSum; void setSide(float sideA, float sideB){ this. sideA= sideA; this. sideB=sideB; }

常量 被关键字final修饰的成员变量就是常量。 常量的名字习惯用大写字母。 final修饰的成员变量不占用内存,在声明final成员变量时,必须要初始化。 可以使用常量,但不能做更改常量的值。

class Tom{ final int MAX = 100; static final int MIN = 20; } class Example{ public static void main(String[ ] args){ System.out.println(Tom.MIN); Tom tom = new Tom(); int x = 0; x = Tom.MIN+tom.MAX; System.out.println(x);

可为private, public,protected或default 若方法的类型为void,则无return语句。 方 法 类所创建的对象可以调用实例方法和类方法形成一定的算法,体现对象具有的某种功能。 对象不能调用构造方法。 方法的定义包括两部分:方法声明和方法体。 与return语句返回值的类型相同。 可为private, public,protected或default [<修饰符>]<类型><方法名称> ([<参数行>]){ <方法体 > [return 返回值;] } 若方法的类型为void,则无return语句。

int min3(int x,int y,int z){ //返回x,y,z中较小数 int small; Math.min(x,y) small=Math.min(x,y); small=Math.min(small,z); return small; }

实例方法和类方法的区别 实例方法可以对类变量操作也可以对实例变量操作,而类方法只能对类变量进行操作。 实例方法可以调用该类中的其他方法;类方法只能调用该类中的类方法,不能调用实例方法。 实例方法必须通过对象来调用;类方法通过类名调用。

方法参数 在Java中,方法的所有参数都是“传值”的。 参数变量必须有具体的值。 参数变量的值是调用者指定的值的拷贝。 方法参数有两种:基本数据类型;对象引用。 两种参数传值的区别 方法不能改变基本类型参数的值。 方法可以修改对象参数的状态。

System.out.println(x); System.out.println(y); int x = 5,y = 6; …… int add(int n,int m){ n = n + 1; m = m + 1; return (x + y); } int b = add(x,y) System.out.println(x); System.out.println(y); 方法调用前x=5,y=6 方法调用后x=5,y=6,值不变

5 x 值被拷贝 6 值被加1 使用基本类型参数 a1 使用对象引用参数 a2 对象引用被拷贝 类A 方法对a2的引用,将改变A中变量的值

方法重载:一个类中有多个方法的名字相同,但方法中的参数的个数或类型不同。 float getArea(float r){ return 3.14f*r*r; } float getArea(float x,int y){ return x*y; float getArea(float r){ return 3.14f*r*r; } double getArea(float x){ return x*x; 不是重载 方法的返回类型和参数的名字不参与比较。

关键字this this可以出现在实例方法和构造方法中,但不可以出现在类方法中。 在构造方法中使用this,代表使用该构造方法所创建的对象。

包(package) 包简介 Java提供包来管理类名空间,以保证类名的唯一性。 package pkg1[.pkg2[.pkg3…]]; 将一个Java源文件中的类打成一个包。 package tom.jiafei; …\tom\jiafei

import语句 使用import语句可以引入Java提供的类。 使用import 语句可以引入自定义包中的类。 Java中标准包简介 java.applet : 包含实现java applet的类 java.awt : 包含抽象窗口工具集图形、文本和窗口GUI类 java.lang : 包含所有的基本语言类 java.io : 包含输入输出类 java.net : 包含实现网络功能的类 java.rmi : 包含实现远程调用的类 java.until : 包含java提供的数据类型类 默认加载java.lang.object

使用自定义包中的类 使用import 语句引入自定义包中的类。如:import tom.jiafei.*; 为了使程序能使用tom.jiafei包中的类,我们必须在 classpath中指明我们包的位置。 假设tom.jiafei的位置是:c:\2000 更新classpath的设置,在命令行执行: set classpath=E:\jdk1.5\jre\lib\rt.jar;.;c:\2000 还可以添加到Classpath值中。

访问权限 类在定义声明成员变量和方法时,可以用关键字private、protected和public来说明成员变量和方法的访问权限,使得对象使用自己的变量和方法时受到一定的限制。 私有变量和私有方法 用关键字private修饰的成员变量和方法被称为私有变量和私有方法。 对于私有成员变量或方法,只有本类创建的对象才能访问自己的私有成员变量和类中的私有方法。

用public修饰的成员变量和方法被称为公有变量和公有方法。 公有变量和公有方法可以被任何对象使用。 class A{ public float weight; public float f(float a,float b){ return a+b; } class B{ void g(){ A a=new A(); a.weight = 23f; //合法 a.f(3,4); //合法 }

用protect修饰的成员变量和方法被称为受保护的变量和受保护的方法。 受保护的变量和受保护的方法可以被同一包中的类的对象使用。 受保护的成员变量和方法 用protect修饰的成员变量和方法被称为受保护的变量和受保护的方法。 受保护的变量和受保护的方法可以被同一包中的类的对象使用。 class A{ protect float weight; protect float f(float a,float b){ return a+b; } class B{ //A和B在同一包中 void g(){ A a=new A(); a.weight = 23f; //合法 a.f(3,4); //合法 }

不用private、public 、protected修饰符的成员变量和方法被称为友好变量和友好方法。 友好变量和友好方法可以被同一包中的类的对象使用。 class A{ float weight; float f(float a,float b){ return a+b; } class B{ //A和B在同一包中 void g(){ A a=new A(); a.weight = 23f; //合法 a.f(3,4); //合法 }

对象a的位置 private成员 友好成员 protected成员 public成员 在类A中,a访问成员 允许 在与A同包的另外一个类中 a访问成员 不允许 在与A不同包的另外一个类中

基本类型数据的类包装 Java提供了基本数据类型相关的类,实现了对基本数据类型的封装。 封装好的类在java.lang包中,分别是:Byte、Integer、Short、Long、Float、Double和Character类。 Double和Float类 Double类和Float类实现了对double和float基本型数据的类包装。 构造方法 Double(double value) Float(float value)

Byte,Short , Integer和Long类 Byte,Short , Integer和Long类实现了对byte,short ,int和long基本型数据的类包装。 构造方法 Byte(byte value) Short(short value) Integer(int value) Long(long value)

Character类 Character类实现了对char型数据的类包装。 构造方法 Character(char c) public static boolean isDigit(char ch) public static boolean isLetter(char ch) public static boolean isLetterOrDigit(char ch)

public static boolean isLowerCase(char ch) public static boolean isUpperCase(char ch) public static char toLowerCase(char ch) public static char toUpperCase(char ch) public static boolean isSpaceChar(char ch)