Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

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

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

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

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

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

6 例:一个梯形类的定义 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; 成员方法,用来刻画功能

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

8 不能写成: 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;

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

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

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

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

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

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

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

16 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);

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

18 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; }

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

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

21 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,值不变

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

23 方法重载:一个类中有多个方法的名字相同,但方法中的参数的个数或类型不同。
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; 不是重载 方法的返回类型和参数的名字不参与比较。

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

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

26 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

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

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

29 用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); //合法 }

30 用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); //合法 }

31 不用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); //合法 }

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

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

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

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

36 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)


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

Similar presentations


Ads by Google