2019精品第三章类与对象数学

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

My car No. is : 3456
System.out.println (“My car No. is : ”+car_number);
}
22
}
• 或者把main()也放入Car类里,文件名为Car.java,适 用于代码少的程序。
public class Car {
int car_number;
class Car {
int color_number; int door_number; int speed;
void brake() { … } void speedUp() {…} void slowDown() { … } } }
14
• 关键字
–Class • 表明其后声明的是一个类。
–extends • 如果所声明的类是从某一父类派生而来, 那么,父类的名字应写在extends之后
void set_number(int car_num) {
car_number=car_num; }
void show_number() {
System.out.println (“My car No. is : ”+car_number); }
public static void main(String args[])
公有数据 私有数据
数据
方法
方法
10
对象A
对象B
继承 • 有助于软件的重用性,使程序结构清晰,
降低了编码和维护的工作量 • 新的类可以获得已有类(称为超类、基
类或父类)的属性和行为,称新类为已 有类的派生类(也称为子类) • 在继承过程中派生类继承了基类的特性, 包括方法和变量 • 派生类也可修改继承的方法或增加新的 方法,使之更适合特殊的需要
11
Type Brand
Vehicle
Type Brand Horn
Bicycle
Type Brand
Airbag Engine
Type Brand Seats
MotorVehicle
Airplane
12
多态
• 一个程序中同名的不同方法共存
• 不同类的对象可以响应同名的方法 , 具体的实现方法却不同
8
• 例如:类 Car 及 Car 的对象 抽象数据类型 Car
Class Car {
String color; int door_number; int speed;
void brake() { … } void speedUp() {…} void slowDown() { … }
}
Car 的对象们:
–implements • 如果所声明的类要实现某些接口,那么, 接口的名字应写在implements之后
15
• 修饰符
–可以有多个,用来限定类的使用方式 –public
• 表明此类为公有类
–abstract
• 指明此类为抽象类
–final
• 指明此类为终结类
• 类声明体
–数据成员声明及初始化
• 可以有多个
2
1、面向对象的概念
• 面向对象的程序设计
–与结构化程序设计方法相比,更符合人类 认识现实世界的思维方式
–已成为程序设计的主流方向 –涉及的主要概念
• 封装 • 继承 • 多态
3
1.1 对象
–现实世界中 • 万物皆对象 • 都具有各自的属性(名词),对外界都 呈现各自的行为(动词)
–程序中 • 一切都是对象 • 都具有标识 (identity), 属性和行为(方法) –通过一个或多个变量来保存其状态 –通过方法(method) 实现他的行为
[static][ final][abstract] [synchronized] 返回类型 方法名([参数列表]) [throws exceptionList]
{ 方法体
}
• 返回类型可以是任意的Java数据类型,当一个方法不
需要返回值时,返回类型为void。
20
方法的参数传递
• 参数的类型可以是基本数据类型,也可以是 引用类型。
–格式说明
• Public,protected,private 为访问控制符, • static指明这是一个静态成员变量(类变量) • final指明变量的值不能被修改
19
3.3 方法
• 方法是在类中定义,用来实现对象操作的函数。
– 声明格式
[public | protected | private]
Car redCar = new Car(); Car greenCar = new Car() Car blackCar = new Car();
……
redCar.brake(); greenCar.speedUp();
9
2 面向对象基本特征
• 封装:将对象的数据和基于数据的操作封装 在一起
封装使用方法将类的数据隐藏起来,控制用户 对类的修改和访问数据的程度。
24
4.1 对象的创建
• 对象的声明 –格式
类名 变量名 例如Car是已经声明的类名,则下面语句 声明了一个CarDemo对象(也叫做实例) Car CarDemo;
25
• 对象的创建
–生成实例的格式: new <类名>() 例如: CarDemo=new Car()
或者声明与创建合为一步: Car CarDemo = new Car(); 其作用是:
第三章 类与对象
1
主要内容
1、面向对象的概念 2、面向对象的基本特征 3、类,变量,数据成员与方法 4、对象的创建,初始化 5、static ,final变量及方法 6、方法重载 7、This关键字 8、对象的回收 9、包 10、Java基础类库 11、类的访问控制 参考thinking in java第一,四,五章 郑莉版教材第二章,第四章4.6 李发致版教材第三章,第四章4.2,4.4.1, 4.4.2
6
1.2 类
• 将属性及行为相同或相似的对象归 为一类。
• 类可以看成是对象的抽象,代表了 此类对象所具有的共有属性和行为。
7
• 可以将现实生活中的对象经过抽象, 映射为程序中的对象。对象在程序 中是通过一种抽象数据类型来描述 的,这种抽象数据类型称为类 (Class)。
• 对象是类的具体实例。
• Java语言中,基本类型作为参数均采用传值 (passing –by- value)的方式完成,也就是, 对形参的任何改动都不会影响到实参。
• 而引用类型变量作为参数传递时,采用的是 引用传递(passing-by-reference)的方式,在方 法体中对形参的改动将会影响到原来的变量。
• 例MethodArgment.java
21
一个简单的类:类的定义放在
Car.java里,测试代码放入 class CarDemo CarDemo.java里,运行时, { 这两个文件放在同一目录下 public static void main(String args
。或者两段代码放在同一文 件CarDemo.java
class Car
据类型(基本数据类型,类,接口,数 组) • 在一个类中数据成员(变量)名是唯一 的
18
–声明格式 [public | protected | private] [static][ final]
数据类型 变量名1[=变量初值],
变量名2[=变量初值], … ;
static int sum =7; private String gardenName; private Fruit banana; ……
{ Car DemoCar=new Car(); DemoCar.set_number(3456); DemoCar.show_number();
{
}
int car_number;
}
void set_number(int car_num) {
car_number=car_num; }
void show_number() {
• 在内存中为此对象分配内存空间
–引用变量的初值为null,也可以被赋以空值
例如:CarDemo=null; 见例:CircumferenceTest.java
26
4.2 对象的初始化 (Object Initialization)
• 与C++相似,新创建对象的初始化是通 过构造方法(constructor)来完成
• 可见,使用toString()简化了代码,不必 再用多个println把对象的数据一一打印 出来。
–另例:一个带有constructor的Student.java
31
声明toString时需要注意以下事项: • toString()必须为public; • 返回类型为String; • 方法的名称必须为toString,且没有参数; • 在方法体中不要使用输出方法
System.out.println();
32
4.2.2 构造方法种类
1)系统提供的默认构造方法 –如果在类的声明中没有声明构造方法, 则Java编译器会提供一个默认的构造 方法。 –默认的构造方法没有参数,其方法体 为空。
33
• 声明一个银行帐号类BankAcount存于 文件BankAccount.java,及测试代码 BankTester, 放于BankTester.java, 这两 个文件放在同一个路径下。
• 使语言具有灵活、抽象、行为共享、 代码共享的优势,很好地解决了应 用程序方法同名问题
13
3、类,变量,数据成员及方法
——3.1 类的声明
• 声明形式
[public] [abstract | final] class 类名称 [extends 父类名称] [implements 接口名称列表] { 数据成员声明及初始化; (field, constructor) 方法声明及方法实现; (method declaration) }
{
hour=newH ;
minute=newM ;
second=news ;
}
public void showTime()
{
System.out.println(hour+":"+minute+":"+second);
}
}
17
3.2 数据成员
• 数据成员包括基本数据类型和引用 类型的数据。也就是Java中任意的数
类的构造方法为新生成的对象初始化 28
String toString()
• String toString()是一个经常用到的方法,当需 要把一个对象输出到屏幕,就要用到此方法.
• 实际上,Java的所有类都有一个默认的 toString() ,例如TimeStamp.java中
– System.out.println(newTime)就等价于 System.out.println(newTime.toString);
–方法声明及方法实现
• 可以有多个
16
例:钟表类 Clock.java public class Clock { // 成员变量 int hour ; int minute ; int second ;
// 成员方法
public void setTime(int newH, int newM, int newS)
4
• 例:
–钟表
• 数据(属性)
–int Hour; int Minute; int Second;
• 方法(行为)
–SetTime(); ShowTime();
5
• 例:
–学生பைடு நூலகம்
• 数据(属性)
–String name; int ID; int Eng; int Math;
• 方法(行为)
–统计成绩 getEng(), getMath() getTotal()
• 如果直接调用默认的toString(),返回结果形式 为: 对象类的名字@对象的地址。
29
• 编译后运行结果如下:
– TimeStamp@7d772e
• 解释 –@之后的数值为对象newTime所指的 存储地址。
30
• 如果自己重写TimeStamp.java, 将对象的 内容转换为字符串,再输出到屏幕。见例: TimeStamp2.java
{
Car DemoCar=new Car();
DemoCar.set_number(3456);
DemoCar.show_number();
}
}
23
4、对象的创建,初始化
• 对象的创建与C++类似,同样的 Java也提供了构造方法 (constructor)在对象创建时被自动 调用,进行对象初始化。
–一个带有构造方法的Cat类 例:MyConstructor.java
27
4.2.1 构造方法定义
构造方法的特点 • 一种和类同名的特殊方法 • 没有返回类型,修饰符void也不能有 • 通常被声明为公有的(public) • 可以有任意多个参数 • 主要作用是完成对象的初始化工作 • 不能在程序中显式的调用 • 在生成一个对象时,系统会自动调用该
相关文档
最新文档