Java面向对象程序设计第3章 类与对象

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
class 类名{ 成员变量;//数据 成员函数;//操作 };



可以发现C++中定义类和C语言定义结构体的 语法格式非常相似,不同之处是类中定义了成员 函数(对数据的操作)。 特别的,C++定义类体的一对大括号后为什么 有个分号呢?这是struct的痕迹。如果缺失这个 分号,进行C++程序编译时会报错“error: expected ';' after class definition”。 比如定义Person类,就是将上面关于Person的 结构体和相关操作封装在一起,形成一个真正的 复合数据类型。
class Person{ //数据:成员变量 char name[20]; //姓名 int age; //年龄 char sex; //性别 char id[18]; //身份证号 int nation; //民族 //操作:成员函数 void speak(Person p){//说话 printf("I am %s",p.name); } void eat (){//吃饭 printf("吃饭去..."); } void run(){//跑步 printf("我在跑步...."); } };
void speak(Person p){ printf("I am %s",p.name); } void eat (){ printf("吃饭去..."); } void run(){ printf("我在跑步...."); }



数据类型是由数据值的集合和定义在该集合上的 一组操作构成。数据和操作是紧密相关的,不能 独立看待,需要将它们封装在一起才有意义。 比如姓名变量name和说话函数speak封装在 Person复合数据类型中,那么这个name就是 Person的姓名,speak就是Person在说话。孤 立地讲姓名name或说话speak是有没有意义的。 C++在C语言struct语法基础上改建,定义了 类class机制。C++类的定义的格式如下:
第3章 类与对象
主讲人:程裕强
主要内容

理解struct到class的发展 掌握Java类和对象的定义 掌握对象的内存结构与生命周期 掌握构造器和this关键字的使用 掌握方法重载 掌握权限符的使用和JavaBean的规范 掌握static的使用 了解代码快与内部类 掌握包的定义与使用 阅读三个自定义的数据结构类
3.2 类
3.2.1 类的定义


Java语言是面向对象的语言,具有定义复合数 据类型的机制。 实际上Java的类是在C++的类机制的基础上进 行改进优化而来的,定义类的语法格式与C++ 定义类的语法格式非常相似,不但可以定义数 据,还可以定义对数据的操作。定义一个类的 格式如下: 修饰符 class 类名{ 属性; //对应C++的成员变量 方法; //对应C++的成员函数 }
3.1从struct到class



C语言是典型的面向过程语言,针对一个特定的问题, 通过函数将一个大问题分解一个个小问题去解决。当 问题发生变化,所有的代码基本上都要重写,可重用 的代码很少。 如果把以前解决的某一具体问题抽象一下,升级到 “概念”级,形成一个新的数据类型。以后针对该问 题就可以在概念级上去解决。这就需要编程语言具有 定义复合数据类型的能力。 在C语言中,基本数据类型有整型、浮点型、字符型、 枚举型,而实际问题会涉及大量复合数据,这些复合 数据最初是由结构体类型struct来描述、简单地堆积 起来的。比如用结构体类型表示“人”的数据:
/*student是struct Person型的变量*/ struct Person student ; student.age=25; /*设置年龄值*/

Hale Waihona Puke Baidu
对于基本数据类型,系统已经定义好了基本操作, 可以进行算术运算、比较运算等操作。 但是对于结构体类型,通过struct定义的只是数 据的组成,没有定义具体的操作。比如对于上面 Person结构体类型,需要有说话speak、吃饭 eat、跑步run等行为操作,系统没有定义,这 需要我们自己去定义。
3.2.3 方法



Java类的方法对应于C++类的成员函数,表现类的操 作(行为动作)。 在第二章我们已经学习了方法的定义,那是一类特殊的 方法,与主方法的修饰符相同,是“public”和 “static”修饰的方法。 一般定义方法的格式如下:

例1:定义一个简单的Person类。
public class Person1 {//Person类的第1个版本 public String name; //姓名 public boolean sex; //性别 public int age=0; //年龄 public void speak(){ //说话 System.out.println("I am "+name); } } 说明:与第2章相似,对于Windows平台,在D盘下创 建ch3目录;对于Linux平台,在主目录下创建ch3目 录。ch3目录即是第3章的工作目录,存放Java源程序。 在ch3目录中创建一个文本文件,然后重命名为 “Person1.java”,编写代码如上。
3.2.2 属性




Java类的属性对应于C++类的成员变量,表示 类的数据。在Java中一般将类的成员变量称为 属性。类的属性可以是Java中任何一种数据类 型的变量。 属性名要符合Java标识符语法要求,且属性名 首字母小写。 属性的作用域在整个类中是可见的。也就是在 本类的其他方法中可以直接访问该类的属性。 在声明属性时可以赋初值。 为了增加程序可读性,每个属性单独占一行, 不要将几个同类型的属性合并一起定义。
struct Person{ char name[20]; char sex; int age; char id[18]; int nation; };

/*姓名*/ /*性别*/ /*年龄*/ /*身份证号*/ /*民族*/
定义一个结构体类型后,就可以定义该类型的变 量了,然后结构体变量通过成员运算符“.”来 访问成员变量
相关文档
最新文档