java面向对象教程.ppt
合集下载
Java的面向对象编程技术PPT课件

同类
可
可
可
可
同包的子类
可
可
可
不
同包的非子类
可
可
可
不
不同包的子类
可
可
不
不
不同包的非子类
可
不
不
不
5
说明变量是实例变量还是类变量
static:说明该变量是一个静态变量或类变量, 独立于该类中的任何对象,在类的实例只有一 个备份,可以不通过类的对象而直接使用,它 一直属于定义它的类。
无static:为实例变量,必须通过类的对象访问, 每个对象都有这些变量的备份。
12 见例inheritance
3.1类—方法的参数传递
返回目录
Java语言只支持参数传值的机制,而C++同时支持传值和传引用。 传值意味着当参数被传递给一个方法或者函数时,方法或者函数接 收到的是原始值的副本。因此,如果方法或者函数修改了参数,受影 响的只是副本,原始值保持不变。
13
3.1类—方法重载
2
类定义修饰符
public(默认访问类型):修饰的类不仅能被 同一程序包中其他类访问,还能被程序包之外 的类和对象使用,一个包中只能有一个类被说 明为public。
private:只能被同一包中的其他类访问。 abstract:说明是抽象类,即不能直接实例化
对象的类。如果一个抽象类被说明,则这个类 中将包括一个或几个抽象方法。(抽象方法是 指该方法只有方法说明没有方法体,例:) final:指该类不能被继承,不能再有子类。
见例test
11
3.1类—构造方法
返回目录
构造方法是一种特殊的方法,用于创建这个类的一个新的对象。构造 方法名与类名相同。除了构造方法外,在类中不允许出现与类名相同的方 法。Java语言中每个类都有构造方法,如果一个类没有说明该类的构造方 法,则系统将提供隐含的不带任何参数的构造方法。
JAVA面向对象基础PPT课件

• 构造方法的作用
✓ 完成对象的创建,即完成对象的实例化 ✓ 一般使用构造方法来完成对成员变量的初始化
示例 TestPerson.java
构造方法
• 默认的构造方法
✓ 在Java中,每个类都至少要有一个构造方法,如果程序员没有在类 里定义构造方法,系统会自动为这个类产生一个默认的构造方法
class Employee{
Contents
1
类和对象的关系
2
构造方法
3
对象创建的内存模型
4
Java中的关键字
构造方法
• 构造方法(构造函数/构造器,Constructor)
具有与类相同的名称 不含返回值类型 不能在方法中用return语句返回一个值 一般访问权限为public 在一个类中,具有上述特征的方法就是构造方法。
• 类的定义
[访问权限控制符] class 类名 {
类的成员 …
}
✓ 修饰符一般为public,也可以没有修饰符。 ✓ 注意类名的命名规范。类名一般大写 ✓ 类的成员:
➢ 成员变量(属性) ➢ 成员函数(方法) ✓ 通过“.”调用属性和方法
• 类的完全声明形式 [public] [abstract | final] class 类名称 [extends 父类名称] [implements 接口名称列表]
✓}
类和对象的关系
• 类的定义
☻ 练习 MyDate.java
✓ 定义一个点日期MyDate,包含三个成员变量year 、month、day 分别表示年、月、日,以及每个属性对应的get和set方法(如, year有getYear( )方法用来获得日期的年份,还有setYear(int y)方 法用来修改或设置日期的年份),最后还有printDate()方法,调 用该方法可以把日期按照“yyyy-mm-dd”的形式输出。
✓ 完成对象的创建,即完成对象的实例化 ✓ 一般使用构造方法来完成对成员变量的初始化
示例 TestPerson.java
构造方法
• 默认的构造方法
✓ 在Java中,每个类都至少要有一个构造方法,如果程序员没有在类 里定义构造方法,系统会自动为这个类产生一个默认的构造方法
class Employee{
Contents
1
类和对象的关系
2
构造方法
3
对象创建的内存模型
4
Java中的关键字
构造方法
• 构造方法(构造函数/构造器,Constructor)
具有与类相同的名称 不含返回值类型 不能在方法中用return语句返回一个值 一般访问权限为public 在一个类中,具有上述特征的方法就是构造方法。
• 类的定义
[访问权限控制符] class 类名 {
类的成员 …
}
✓ 修饰符一般为public,也可以没有修饰符。 ✓ 注意类名的命名规范。类名一般大写 ✓ 类的成员:
➢ 成员变量(属性) ➢ 成员函数(方法) ✓ 通过“.”调用属性和方法
• 类的完全声明形式 [public] [abstract | final] class 类名称 [extends 父类名称] [implements 接口名称列表]
✓}
类和对象的关系
• 类的定义
☻ 练习 MyDate.java
✓ 定义一个点日期MyDate,包含三个成员变量year 、month、day 分别表示年、月、日,以及每个属性对应的get和set方法(如, year有getYear( )方法用来获得日期的年份,还有setYear(int y)方 法用来修改或设置日期的年份),最后还有printDate()方法,调 用该方法可以把日期按照“yyyy-mm-dd”的形式输出。
3-java面向对象PPT课件

• 方法声明的分析: void getMoney (int money)
返回值类型
参数列表
方法名称
2021/3/12
一个方法可以返回一个值来表示方法执行的结
果,这个结果可以是任意类型的数据 • 一个方法只能有一个返回值,不能返回一个以
上的值 • 通常一个方法(构造方法除外)必须有一个返回
5
3.1.4 面向对象的程序设计
• 所有东西都是对象 • 程序是一堆对象的组合;通过消息传递,各对象知道
自己要做什么 • 每个对象都有自己的存储空间,可以容纳其它对象 • 每个对象都有一种类型 • 同一类的所有对象都能接收相同消息
面向对象程序设计: 程序=对象+消息
2021/3/12
6
3.2.1 类的定义
• 在方法的任何分支上,return语句后都不能有 其他的语句。如果有则方法的定义无法通过编 译
2021/3/12
testReturn
16
class Human {
int age; char sex; int money;
void printAge() {
System.out.println("My age is " + age); }
1.封装:将数据成员(Data Member)和属于此 数据的操作方法(Operating Method),放 在同一个实体(Entity)或对象中。
2.继承:父类定义(Define)一些通用的属性 与行为,其孩子继续使用。
3.多态:允许将父对象设置成为和一个或更多 的子对象相等的技术。
2021/3/12
• 定义类的语法 • 类的数据 • 类的方法
2021/3/12
返回值类型
参数列表
方法名称
2021/3/12
一个方法可以返回一个值来表示方法执行的结
果,这个结果可以是任意类型的数据 • 一个方法只能有一个返回值,不能返回一个以
上的值 • 通常一个方法(构造方法除外)必须有一个返回
5
3.1.4 面向对象的程序设计
• 所有东西都是对象 • 程序是一堆对象的组合;通过消息传递,各对象知道
自己要做什么 • 每个对象都有自己的存储空间,可以容纳其它对象 • 每个对象都有一种类型 • 同一类的所有对象都能接收相同消息
面向对象程序设计: 程序=对象+消息
2021/3/12
6
3.2.1 类的定义
• 在方法的任何分支上,return语句后都不能有 其他的语句。如果有则方法的定义无法通过编 译
2021/3/12
testReturn
16
class Human {
int age; char sex; int money;
void printAge() {
System.out.println("My age is " + age); }
1.封装:将数据成员(Data Member)和属于此 数据的操作方法(Operating Method),放 在同一个实体(Entity)或对象中。
2.继承:父类定义(Define)一些通用的属性 与行为,其孩子继续使用。
3.多态:允许将父对象设置成为和一个或更多 的子对象相等的技术。
2021/3/12
• 定义类的语法 • 类的数据 • 类的方法
2021/3/12
面向对象程序设计(JAVA)课件

字符串比较
String类提供了比较两个字符串的方法,如 equals()和compareTo()。
3
字符串转换
String类还提供了将其他数据类型转换为字符串 的方法,如Integer.toString()和 Double.toString()。
ArrayList类
动态数组
ArrayList类是一个动态数组,可以根据需要自动增长 和缩小。
Java的主要特性
面向对象
平台无关
自动内存管理
多线程支持
Java是一种纯粹的面向对象 编程语言,支持类和对象的 概念,以及继承、多态等面
向对象特性。
Java通过字节码实现跨平台 运行,只要安装了Java运行 时环境(JRE)或Java开发工 具包(JDK),就可以在任何 支持Java的平台上运行Java
01
常用方法
HashMap类提供了用于插入、删除和 查找键值对的方法,如put()、remove() 和get()。
02
03
遍历与清空
HashMap类还提供了用于遍历和清空 容器的方法,如iterator()和clear()。
Date类
日期时间表示
Date类用于表示特定的 时间点,包括年、月、 日、时、分、秒等信息。
异常的处理方式
01
抛出异常
当程序出现异常时,会抛出异常对象,传递给调用者。
02
捕获异常
在代码中通过try-catch语句块来捕获和处理异常。当try块中的代码出
现异常时,控制流会立即跳转到相应的catch块中执行处理逻辑。
03
声明抛出异常ຫໍສະໝຸດ 在方法签名中通过throws关键字声明该方法可能会抛出的异常,要求
String类提供了比较两个字符串的方法,如 equals()和compareTo()。
3
字符串转换
String类还提供了将其他数据类型转换为字符串 的方法,如Integer.toString()和 Double.toString()。
ArrayList类
动态数组
ArrayList类是一个动态数组,可以根据需要自动增长 和缩小。
Java的主要特性
面向对象
平台无关
自动内存管理
多线程支持
Java是一种纯粹的面向对象 编程语言,支持类和对象的 概念,以及继承、多态等面
向对象特性。
Java通过字节码实现跨平台 运行,只要安装了Java运行 时环境(JRE)或Java开发工 具包(JDK),就可以在任何 支持Java的平台上运行Java
01
常用方法
HashMap类提供了用于插入、删除和 查找键值对的方法,如put()、remove() 和get()。
02
03
遍历与清空
HashMap类还提供了用于遍历和清空 容器的方法,如iterator()和clear()。
Date类
日期时间表示
Date类用于表示特定的 时间点,包括年、月、 日、时、分、秒等信息。
异常的处理方式
01
抛出异常
当程序出现异常时,会抛出异常对象,传递给调用者。
02
捕获异常
在代码中通过try-catch语句块来捕获和处理异常。当try块中的代码出
现异常时,控制流会立即跳转到相应的catch块中执行处理逻辑。
03
声明抛出异常ຫໍສະໝຸດ 在方法签名中通过throws关键字声明该方法可能会抛出的异常,要求
Java面向对象精品PPT课件

method n
数据字段(状态)
类的基本概念
类——是一组具有相同属性特征的对象的 抽象描述。
在真实世界里,有许多同“种类”的对象。 而这些同“种类”的对象可被归类为一个 “类”。例如我们可将世界上所有的汽车归 类为汽车类,所有的动物归为动物类。
动物类
汽车类
自然界中生物的一大类,与植物相对。 多以有机物为食料,有神经,有感觉,能运动。
轿车
பைடு நூலகம்
计程车
巴士
多态性——
不同的类对象收到同一个消息可以产生 完全不同的响应效果,这种现象叫做多 态。利用多态机制,用户可以发送一个 通用的消息,而实现的细节由接收对象 自行决定,这样,同一个消息可能会导 致调用不同的方法。
面向对象程序设计
面向对象程序设计(Object-Oriented Programming,OOP)方法是指用面向对 象的方法指导程序设计的整个过程, 所谓面向对象是指以对象为中心,分 析、设计及构造应用程序的机制。
修理电器 开车
自身所承受的操作 施加于其他对象的操作
学生对象: 属性:
学号:0410430129 专业:电气 性别:男 身高:175cm 体重: 65kg 对象的功能: 回答学号 回答专业 回答性别 回答身高 回答体重 体重变化 修理电器 开车
消息的基本概念
消息是一个对象要求另一个对象实施某项操作 的请求。在一条消息中,需要包含消息的接收 者和要求接收者执行哪项操作的请求,而并没 有说明应该怎样做,具体的操作过程由接收者 自行决定。
软件对象是通过传送消息给其他对象来达到交互及 沟通的作用。如下图所示:
对象A
消息
method 1 data field 1 data field n
数据字段(状态)
类的基本概念
类——是一组具有相同属性特征的对象的 抽象描述。
在真实世界里,有许多同“种类”的对象。 而这些同“种类”的对象可被归类为一个 “类”。例如我们可将世界上所有的汽车归 类为汽车类,所有的动物归为动物类。
动物类
汽车类
自然界中生物的一大类,与植物相对。 多以有机物为食料,有神经,有感觉,能运动。
轿车
பைடு நூலகம்
计程车
巴士
多态性——
不同的类对象收到同一个消息可以产生 完全不同的响应效果,这种现象叫做多 态。利用多态机制,用户可以发送一个 通用的消息,而实现的细节由接收对象 自行决定,这样,同一个消息可能会导 致调用不同的方法。
面向对象程序设计
面向对象程序设计(Object-Oriented Programming,OOP)方法是指用面向对 象的方法指导程序设计的整个过程, 所谓面向对象是指以对象为中心,分 析、设计及构造应用程序的机制。
修理电器 开车
自身所承受的操作 施加于其他对象的操作
学生对象: 属性:
学号:0410430129 专业:电气 性别:男 身高:175cm 体重: 65kg 对象的功能: 回答学号 回答专业 回答性别 回答身高 回答体重 体重变化 修理电器 开车
消息的基本概念
消息是一个对象要求另一个对象实施某项操作 的请求。在一条消息中,需要包含消息的接收 者和要求接收者执行哪项操作的请求,而并没 有说明应该怎样做,具体的操作过程由接收者 自行决定。
软件对象是通过传送消息给其他对象来达到交互及 沟通的作用。如下图所示:
对象A
消息
method 1 data field 1 data field n
Java初级教程 第七章 面向对象3PPT课件

由于Shape类计算周长和面积的方法无法确定,那么 就可以将这样的方法声明为抽象的,以便在具体的 子类中进行实现。
抽象方法的声明
[修饰符] abstract 返回值类型 方法名([参数列表]); 注意:因为抽象方法无法确定具体执行的功能,所有
抽象方法没有方法体,需要在小括号后加上分号
抽象方法
Java语言基础 第七章 面向对象
上章内容
static关键字 封装 继承
extends 方法重写 super关键字 向上转型 向下转型
本章内容
多态 包的使用
package 关键字 import 关键字
抽象类
abstract关键字
接口
多态的概念
什么是多态
多态顾名思义即为多种形态的意思 Java中多态的含义
接口的作用
实现多继承
接口的作用
实现了多继承
接口的作用
降低程序耦合度
接口的作用
降低耦合度
包的使用
什么是包 包是Java用于提供访问保护和命名空间管理的方式 简单的理解,包就是用来将Java中类和接口等进行 分类管理的工具,类似于操作系统中的目录
包的声明
package 包名; 包名的前半部分一般使用倒置的域名,后半部分一般
接口的定义
在Java中接口不仅仅是程序开发过程中“约定”,更 是更加抽象化的抽象类
接口的定义
[修饰符] interface 接口名{[常量];[抽象方法];}
接口的实现
接口的实现
定义类时通过implements关键字实现接口
接口实现的语法
[修饰符] class 类名 [extends 父类名] [implements 接口1,接 口2,……]{类体部分}
抽象方法的声明
[修饰符] abstract 返回值类型 方法名([参数列表]); 注意:因为抽象方法无法确定具体执行的功能,所有
抽象方法没有方法体,需要在小括号后加上分号
抽象方法
Java语言基础 第七章 面向对象
上章内容
static关键字 封装 继承
extends 方法重写 super关键字 向上转型 向下转型
本章内容
多态 包的使用
package 关键字 import 关键字
抽象类
abstract关键字
接口
多态的概念
什么是多态
多态顾名思义即为多种形态的意思 Java中多态的含义
接口的作用
实现多继承
接口的作用
实现了多继承
接口的作用
降低程序耦合度
接口的作用
降低耦合度
包的使用
什么是包 包是Java用于提供访问保护和命名空间管理的方式 简单的理解,包就是用来将Java中类和接口等进行 分类管理的工具,类似于操作系统中的目录
包的声明
package 包名; 包名的前半部分一般使用倒置的域名,后半部分一般
接口的定义
在Java中接口不仅仅是程序开发过程中“约定”,更 是更加抽象化的抽象类
接口的定义
[修饰符] interface 接口名{[常量];[抽象方法];}
接口的实现
接口的实现
定义类时通过implements关键字实现接口
接口实现的语法
[修饰符] class 类名 [extends 父类名] [implements 接口1,接 口2,……]{类体部分}
第03章--Java中的面向对象技术PPT课件

3.3 对象模型的特点
封装
➢ 封装由以下五种因素促成: (1) 将数据与方法捆绑到对象上,在代码中就是类体 中只有成员变量和方法,类体用{}封闭起来,形成独 立的块体。对象拥有自己的数据和方法。 (2) 只有对象自己引用自己的数据和方法。 (3)方法体用{}封闭起来,形成独立的块体。 (4) 一个方法体中可以让另一个对象调用其自己的方 法。 (5)数据尽量隐藏,而设计公有方法操作它。
有生命
物质 无生图 类模块的继承
解释:从生物学角度构建人类,如果不建立相应的层次结 构,可想而知,作为一种高智能生物学,这个类将涵盖所 有生物的共同属性和行为(方法),再加上属于人类自己 的一些属性和行为,这个类的规模将是惊人的。只有进行 合理的层次化,设计才有可能取得有效的进展。
3.3 对象模型的特点
2.封装
一个对象中的数据代表着它的状态,方法则代表它的行为。 外界要改变一个对象的状态,也就是对它所包含的数据进
行操作,只能向该对象发出请求消息,然后由该对象的对 应方法来改变其自身的状态,这就是对象的封装性。 封装暗示着我们并不需要知道对象的具体实现,就能利用 它以任何方式构建系统,如果以后再要改变它的实现时, 将不会影响系统中的其他组件(条件是组件接口不能发生 变化)。
➢ 分析就是将整体分成不同的部分。 ➢ 将事物分成不同的类; ➢ 类分成不同的层次; ➢ 一个事物中包含有不同的对象; ➢ 对象具有不同的属性;对象的行为或功能细分成不同
的子行为或子功能等等。
3.2 人类的思维方式
归纳或抽象
➢抽象是对一组特定的实体、属性、行为进行共性 抽取、得到一个抽象的概念而非具体的实物的过程。 ➢对现实世界中一个个独立的个体进行抽象,就得 到Java中的对象;对现实世界中的属性进行抽象得 到Java中对象或类的成员变量(域);对现实世界中 的每个功能进行抽象,就得到Java中的方法等等。
Java实用教程第5讲初识面向对象PPT

• // TestThisThree.java
• public class TestThisThree {
•
int i = 0,j = 0;
• TestThisThree(int i){
•
this.i = i;
•}
• TestThisThree(int i,int j){
•
this(i);
•
this.j = j;
(3)多态性
多态是面向对象程序设计的另一个重要概念。多态的意思是事物具有不同形式的能力。 举个例子,对于不同的实例,某个操作可能会有不同的行为。这个行为依赖于所要操作 数据的类型。比如说加法操作,如果操作的数据是数,它对两个数求和。如果操作的数 据是字符串,则它将连接两个字符串。
5.2 创建新的数据类型 创建新的数据类型就必须借助关键字class,新类型的名字必须 遵循Java中标示符的命名规则,如: class NewTypeName {
•// TestRectangle.java
•class Rectangle{
•
double side = 1.0;
•
double getArea(){
•
return side * side;
•
}
•}
•public class TestRectangle {
•
public static void main(String[] args) {
•
return radius * radius * Math.PI;
•
}
•}
名为Circle的类已经完成,现在可以用它来创建对象了,如:
Circle c = new Circle( );
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
当我们在任何一个类中用类A 创建了一个对象后,该 对象能访问自己的public变量和类中的public方法。如: class B {
void g()ห้องสมุดไป่ตู้{
A a = new A(); a.weight = 23f; //合法 a.f(3,4); //合法 }
}
访问权限
3.受保护的成员变量和方法 用protected修饰的成员变量和方法被称为受保护
的成员变量和受保护的方法,如: class A {
protected float weight; //weight被修饰为public变量。 protected float f(float a,float b) { //f是public方法。
… } }
假如B与A是同一个包中的类,那么,B类中的a.weight、a.f(3,4)都 是合法的。
public class Rectangle{ private double x,y,width,height; public void setX(double x){ this.x=x; } public double getX(){ return x; } ….
}
对象的组合 public class Circle{ private double x,y,radius; public void setX(double x){ this.x=x; } public double getX(){ return x; } … }
}
生活中的继承
• 生活中,继承的例子随处可见
动物
谁是父类? 谁是子类? 能说出继承的特点吗?
食草动物
食肉动物
继承需要符合的关系:is-a,父类更通用、子类更具体
生活中的继承
• 子类具有父类的一般特性(包括属性和行为), 以及自身特殊的特性
巴士是汽车吗? 卡车是汽车吗? 出租车是汽车吗?
汽车
引擎数量 外观颜色
刹车 加速
属性 行为
最大载客数量 报站
最大载重量 卸货
请问:出租车 包含哪些属性 和行为呢?
所属公司 最大载客数量
打发票
子类与父类
子类与父类 继承是一种由已有的类创建新类的机制。利用继承,
我们可以先创建一个共有属性的一般类,根据该一般类 再创建具有特殊属性的新类,新类继承一般类的状态和 行为,并根据需要增加它自己的新的状态和行为。由继 承而得到的类称为子类,被继承的类称为父类(超类)。
Private 成员 √ ×
×
默认的 成员 √ √
×
protected 成员 √ √
×
public 成员 √ √
√
对象的组合
• 一个类可以把对象作为自己的成员变量,如果用这样的类 创建对象,那么该对象中就会有其它对象,也就是说该对 象将其他对象作为自己的组成部分,或者说该对象是由几 个对象组合而成 。
}
public class Example { public static void main(String args[ ]){ Employee zhang=new Employee(); Employee wang=new Employee(); zhang.setSalary(100); System.out.println("zhang的薪水:"+zhang.getSalary()); wang.setSalary(3888); //wang.salary=88888;是非法的,因为对象wang已经不在Employee
public class Geometry{ private Rectangle rect; private Circle circle; Geometry(Rectangle rect,Circle circle){ this.rect=rect; this.circle=circle; } public void setCirclePosition(double x,double y){ circle.setX(x); circle.setY(y); }
第四章 面向对象-2
课程安排
访问权限 继承 上转型 多态
访问权限
类有2种重要的成员:成员变量和方法。类创建的对 象可以通过“.”运算符访问分配给自己的变量,也可以通 过“.”运算符调用类中的实例方法和类方法。
类在定义声明成员变量和方法时,可以用关键字 private、protected和public来说明成员变量和方法的 访问权限,使得对象访问自己的变量和使用方法受到一 定的限制。 1.私有变量和私有方法
用关键字private修饰的成员变量和方法被称为私有变 量和私有方法。
对于私有成员变量或方法,只有在本类中创建该类 的对象时,这个对象才能访问自己的私有成员变量和类 中的私有方法
访问权限
class Employee{ private double salary=1800;//私有属性,类外无法访问 public void setSalary(double salary){ if(salary>1800&&salary<=6000){ this.salary=salary; } }
访问权限
2.公有变量和公有方法 用public修饰的成员变量和方法被称为共有变量和
共有方法,如:
class A { public float weight; //weight被修饰为public的float型变 量。 public float f(float a,float b) { //方法 f是public方法。 }
类中 System.out.println("wang的薪水:"+wang.getSalary());
} }
用某个类在另外的一个类中创建对象后,如果不希望该 对象直接访问自己的变量(即通过“.”运算符来操作自己 的成员变量),就应将该变量访问权限设置为private。
面向对象编程提倡对象应当调用方法来改变自己的属 性,我们应当提供操作数据的方法,这些方法可以经过 精心设计,使得对数据的操作更加合理。
class B { void g() { Tom a = new Tom(); a.weight=23f; //合法 a.f(3,4); //合法 }
}
假设对象a是类A创建的,对象对成员的访问权限总结如下:
对象a的位置
在类A中,a访问成员
在与A同包的另外一个类中,a 访问成员 在与A不同包的另外一个类中, a访问成员
当我们在任何一个类中用类A 创建了一个对象后,该 对象能访问自己的public变量和类中的public方法。如: class B {
void g()ห้องสมุดไป่ตู้{
A a = new A(); a.weight = 23f; //合法 a.f(3,4); //合法 }
}
访问权限
3.受保护的成员变量和方法 用protected修饰的成员变量和方法被称为受保护
的成员变量和受保护的方法,如: class A {
protected float weight; //weight被修饰为public变量。 protected float f(float a,float b) { //f是public方法。
… } }
假如B与A是同一个包中的类,那么,B类中的a.weight、a.f(3,4)都 是合法的。
public class Rectangle{ private double x,y,width,height; public void setX(double x){ this.x=x; } public double getX(){ return x; } ….
}
对象的组合 public class Circle{ private double x,y,radius; public void setX(double x){ this.x=x; } public double getX(){ return x; } … }
}
生活中的继承
• 生活中,继承的例子随处可见
动物
谁是父类? 谁是子类? 能说出继承的特点吗?
食草动物
食肉动物
继承需要符合的关系:is-a,父类更通用、子类更具体
生活中的继承
• 子类具有父类的一般特性(包括属性和行为), 以及自身特殊的特性
巴士是汽车吗? 卡车是汽车吗? 出租车是汽车吗?
汽车
引擎数量 外观颜色
刹车 加速
属性 行为
最大载客数量 报站
最大载重量 卸货
请问:出租车 包含哪些属性 和行为呢?
所属公司 最大载客数量
打发票
子类与父类
子类与父类 继承是一种由已有的类创建新类的机制。利用继承,
我们可以先创建一个共有属性的一般类,根据该一般类 再创建具有特殊属性的新类,新类继承一般类的状态和 行为,并根据需要增加它自己的新的状态和行为。由继 承而得到的类称为子类,被继承的类称为父类(超类)。
Private 成员 √ ×
×
默认的 成员 √ √
×
protected 成员 √ √
×
public 成员 √ √
√
对象的组合
• 一个类可以把对象作为自己的成员变量,如果用这样的类 创建对象,那么该对象中就会有其它对象,也就是说该对 象将其他对象作为自己的组成部分,或者说该对象是由几 个对象组合而成 。
}
public class Example { public static void main(String args[ ]){ Employee zhang=new Employee(); Employee wang=new Employee(); zhang.setSalary(100); System.out.println("zhang的薪水:"+zhang.getSalary()); wang.setSalary(3888); //wang.salary=88888;是非法的,因为对象wang已经不在Employee
public class Geometry{ private Rectangle rect; private Circle circle; Geometry(Rectangle rect,Circle circle){ this.rect=rect; this.circle=circle; } public void setCirclePosition(double x,double y){ circle.setX(x); circle.setY(y); }
第四章 面向对象-2
课程安排
访问权限 继承 上转型 多态
访问权限
类有2种重要的成员:成员变量和方法。类创建的对 象可以通过“.”运算符访问分配给自己的变量,也可以通 过“.”运算符调用类中的实例方法和类方法。
类在定义声明成员变量和方法时,可以用关键字 private、protected和public来说明成员变量和方法的 访问权限,使得对象访问自己的变量和使用方法受到一 定的限制。 1.私有变量和私有方法
用关键字private修饰的成员变量和方法被称为私有变 量和私有方法。
对于私有成员变量或方法,只有在本类中创建该类 的对象时,这个对象才能访问自己的私有成员变量和类 中的私有方法
访问权限
class Employee{ private double salary=1800;//私有属性,类外无法访问 public void setSalary(double salary){ if(salary>1800&&salary<=6000){ this.salary=salary; } }
访问权限
2.公有变量和公有方法 用public修饰的成员变量和方法被称为共有变量和
共有方法,如:
class A { public float weight; //weight被修饰为public的float型变 量。 public float f(float a,float b) { //方法 f是public方法。 }
类中 System.out.println("wang的薪水:"+wang.getSalary());
} }
用某个类在另外的一个类中创建对象后,如果不希望该 对象直接访问自己的变量(即通过“.”运算符来操作自己 的成员变量),就应将该变量访问权限设置为private。
面向对象编程提倡对象应当调用方法来改变自己的属 性,我们应当提供操作数据的方法,这些方法可以经过 精心设计,使得对数据的操作更加合理。
class B { void g() { Tom a = new Tom(); a.weight=23f; //合法 a.f(3,4); //合法 }
}
假设对象a是类A创建的,对象对成员的访问权限总结如下:
对象a的位置
在类A中,a访问成员
在与A同包的另外一个类中,a 访问成员 在与A不同包的另外一个类中, a访问成员