•类和对象概述
• 面向过程与面向对象的程序设计
面向过程
•举例:实现五子棋功能
面向对象
•面向对象编程的思想更接近于人的思维,程序用对象及对象间的相互作用来完成程序的功能,程序中的对象是对现实生活中存在的对象的抽象。
•面向对象的程序设计可以很好的解决面向过程的程序设计出现的大规模编程,代码复用等问题。
•面向对象程序设计三个重要特征是封装、继承、多态。
•面向对象的设计思想
–面向对象程序设计的基本思想是将现实世界中的事物抽象为对象,并给抽象出来的对象赋予相应的状态和行为,通过对消息的响应完成一定的任务。
–在现实世界中任何事物都可以被认为是对象,如:
•学生、教师
•课程、教室、班级
•计算机、电视机、空调等。
•思考在OOP设计中对象的共性是什么?
–具有一定的状态(数据):静态属性
–具有一定的行为(功能):动态属性
• 例如:一台空调,其状态包括颜色、尺寸、位置、当前运转 状态(是否处于开机、关机、或制冷状态)等静态属性;行 为包括开机、关机、制冷等动态属性。
• 类与对象概述
•类:是一种抽象的数据类型,是同种对象的集合与抽象,是具有共同行为和属性的若干对象的统一描述体。
•对象:现实世界中某个存在的实体在计算机逻辑中的映射和体现。
•类与对象的关系。
•属性和方法组合在一起构成类,用来描述学生这类对象的共同特征。
•可以通过下面的代码操作一个学生类的对象
• 类的定义
• 类声明的语法:
– [修饰符] class 类名 {
•[private/protected/public]
成员的声明和定义 ;
– }
–其中,private、public及protected被称为访问修饰符。
–举例:定义一个学生类。
• 对象的实例化
•类只是抽象的数据类型,类对象才是具体可操作的实体。利用对象使用类提供的功能:• 对象的实例化格式:
– <类名> <对象名> = new <类名> ([参数1,参数2,…]) ;
– 或
– <类名> <对象名>;
– <对象名> = new<类名> ([参数1,参数2,…]) ;
– 举例:为学生类实例化对象。
• 类成员的访问
•访问属性的一般形式:
– <对象名>.<属性名>
•访问方法的一般形式:
– <对象名>.<方法名>([<参数1>,<参数2>,…]);
•方法中参数的个数、数据类型与原方法中定义的要一致。
•举例:访问学生类的成员。
•类的成员方法
• 一个完整的类
• 方法的概念
• Java中方法只能定义在类中,称为类的成员方法,基本的语法:
– [方法修饰符] 方法返回值方法名([<参数列表>]) { •方法体;
– }
•成员方法修饰符:主要有public、private、protect、 final 、static、abstract和synchronized7种, 用来说明方法的访问权限。
•方法的返回值类型
– Java语言要求,在成员方法说明中必须指明返回值的类型,如不需 要返回值,返回值类型被说明为void。
• void fun() {}
– 返回值用return语句来实现,如有返回值,return语句要带参数, 且参数必须与方法中的返回值类型一致。
• int fun() { return value(需要返回的值);}
•方法名 – 是Java语言合法的标识符。
– 成员方法名一般具有一定的含义。
•参数列表
–由逗号分隔的类型及参数名组成,是可选项。类型是Java语言的任何数据类型。
•方法的调用中需要传递实际参数。
•方法体
–包含了实现方法功能的Java语言程序代码。
–方法体中可以定义局部变量,它的作用域仅在方法体内。
–方法体用“{}”括起来。
c
• 方法的重载
•类中两个以上的同名方法,参数类型或个数不同,称为方法的重载。
•方法重载的依据
– 方法名相同
– 参数列表必须不同
•注意
– 返回值可以不同(返回值不作为重载的依据)
– 是否静态的也不作为重载依据
– 重载的方法之间可以互相调用
• 构造方法概念
•对象的初始化,谁来完成?
– 概念:在定义对象时为对象赋初值;
– 注意:初始化就是开辟内存单元同时对数据成员给出明确的值。
•构造方法
– 功能:初始化对象
– 方法名:与类名相同
– 参数:可有,可无
– 返回值:不指定返回值(不能写void )
– 内容:任意,通常只包含成员赋值语句
– 调用方法:创建对象时自动调用
•在对象的生命周期中构造方法只会调用一次。
•一个类中如果没有定义构造方法,Java编译器会自动为类产生一个默认的构造方法。默认产生的构造方法是一个无参的,什么也不做的空方法,只要类中有显示声明的构造方法,Java编译就不产生默认的构造方法。
•在一个类中可以定义多个构造方法,但构造方法的参数列表不能相同。
•方法传参
•首先,回顾一下在程序设计语言中有关将参数传递给方法(函数)的一些专业术语。
– 值传递:表示方法接收的是调用者提供的变量的值。
– 引用传递:表示方法接收的是调用者提供的变量地址。
– 一个方法可以修改传递引用所对应的变量值,而不能修改传递值 调用所对应的变量值。
• Java中方法参数共有两种类型:
– 基本数据类型
• 基本数据类型:
– 方法不会改变实参的值。
• 举例:
– 对象引用类型
• 引用类型:
– 方法体内,通过引用改变了实际参数对象的内容。
• 举例:
– 将一个雇员的薪金提高三倍。
•总结:
– 方法不能修改基本数据类型的参数(数值型和布尔型)。
– 方法可以修改引用类型参数的状态。