面向对象程序设计类和对象

上传人:宝路 文档编号:48330111 上传时间:2018-07-13 格式:PPT 页数:26 大小:281.47KB
返回 下载 相关 举报
面向对象程序设计类和对象_第1页
第1页 / 共26页
面向对象程序设计类和对象_第2页
第2页 / 共26页
面向对象程序设计类和对象_第3页
第3页 / 共26页
面向对象程序设计类和对象_第4页
第4页 / 共26页
面向对象程序设计类和对象_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《面向对象程序设计类和对象》由会员分享,可在线阅读,更多相关《面向对象程序设计类和对象(26页珍藏版)》请在金锄头文库上搜索。

1、第三章类和对象1回顾 Java 具有8种基本数据类型:int、boolean 、char、short、long、float 及 double Java 中的运算符可划分为四大子集:算术 运算符、位运算符、关系运算符、逻辑运算 符 Java 支持下列控制结构:选择、循环、跳 转 数组可用来将同一类型的数据存储在连续的 内存位置2目标 掌握如何创建类和构造对象 掌握方法的重载和覆盖 了解类的继承 了解包概念3类和对象 对象表示现实世界中某个具体的事物。 抽象是从特定的实例中抽取共同的性质 以形成一般化概念的过程。 对象具有两方面的含义:99 在现实世界中:在现实世界中: 是客观世界中的一个实体是客

2、观世界中的一个实体99 在计算机世界中:在计算机世界中: 是一个可标识的存储区域是一个可标识的存储区域4类和对象 类是具有共同属 性和行为的对象的 抽象。 类可以定义为数 据和方法的集合。 类也称为模板, 因为它们提供了对 象的基本框架。类对象抽象实例化属性或状态操作或行为数据或变量方法封装的实体=数据+方法5创建类 class name type variable1;type variableN;type methodname1(parameter-list)/方法体type methodnameN(parameter-list)/方法体 在类中,属性是通过成员变 量体现的,而操作是用成员

3、函数(又称为方法)实现的 。Java中定义类的通用格式 :成员变量(对象属性 )成员方法 (对象行为 或操作)6定义方法 定义方法的一般格式:access type methodname1(parameter-list)/方法体 发往某个对象的消息对应于 一个方法调用。作为对消息 的响应,对象将执行一个类 似于过程体的方法。方法是 包含在类中的函数。方法名称返回类型修饰符, 可选参数列表, 可选 举例: public void setdate(int day, int month, int year)day=23; month=7; year=2003; 7this引用public class

4、 PassTest int x;PassTest(int x) this.x=x;public void passingValue()System.out.println(“x 等于 “ +x); public static void main(String args) PassTest test = new PassTest(10);test.passingValue(); v关键字 this 与对象关联v它用于指示当前对象指明此对象的变 量 x 应赋值为 通过构造函数传 递的自变量 x 的值。 8简单访问控制 - private 和 public public 声明的数据成员和 成员函数可

5、从类外部的任 何地方访问。 而private 数据将被隐藏 ,在类外不可见,这就实 现了数据封装的思想。 要从类外操纵private 成 员,只能通过类的public 或protected成员来实现 。 9方法重载(overloading) 方法重载是Java实现面向对象的多态性机 制的一种方式。 同一个类中多个方法有相同的名字,不同 的参数列表,这种情况称为方法重载。 返回类型不同并不足以构成方法重载。 当重载方法被调用时,编译器根据参数的 类型和数量来确定实际调用哪个重载方法 的版本。10方法重载示例class Calculation public void add( int a, int

6、 b) int c = a + b;System.out.println(“两个整数相加得 “+ c);public void add( float a, float b)float c = a + b;System.out.println(“两个浮点数相加得“+c);public void add( String a, String b) String c = a + b;System.out.println(“两个字符串相加得 “+ c); class CalculationDemo public static void main(String args) Calculation c =

7、new Calculation(); c.add(10,20); c.add(40.0F, 35.65F);c.add(“早上“, “好“); 编译器决定 调用版本 11构造函数 构造函数名称与类名称相同 构造函数没有返回类型 其任务是在创建对象时初始化其内部状态class Fruit boolean seedLess;boolean seasonal;float price;Fruit(boolean seed, boolean season, float p) seedLess = seed;seasonal = season;price = p; 12创建对象 使用下列语法可创建对象:n

8、ew 构造函数 关键字 new 通常称为创建运算符,用于分 配对象内存,并将该内存初始化为缺省值。 一旦 new 完成分配和初始化内存,它就将 调用构造函数来执行对象初始化。 当创建一个类时,只是 创建了一种新的数据类 型。对象是类的一个实 例。class FruitDemo public static void main(String args)Fruit f = new Fruit(true,false,50.0F); 创建对象13缺省初始值 Java 保证了在任何代码使用该内存之前 ,已至少将内存初始化为可预知的缺省值 类型缺省值类型缺省值byte(byte)0charu0000 sho

9、rt(short)0float0.0Fint0double0.0Dlong0L对象引用nullbooleanfalse14重载构造函数 Java 为每一个类自动提供缺省构造函 数 缺省构造函数将成员变量的值初始化 为缺省值 一旦创建了自己的构造函数,缺省的 构造函数将不复存在。 重载构造函数提供了一组创建对象的 方式,可以根据需要决定是否带初始 参数。 public class constructOverload int x;constructOverload() x=0;System.out.println(“不带参数的构造函数“);constructOverload(int x)this.

10、x=x;System.out.println(“带一个参数的构造函数“); 15继承 被继承的类称为父类 继承父类的类称为子类 执行继承时,子类将获得父类的属性,并 具有自身特有的属性。 继承是面向对象编程技术的一块 基石,它允许创建分等级层次的 类。运用继承,可以创建一个通 用类定义一系列一般特性。该类 可以被更具体的类继承Emoloyee类:namesexWorker类:categorydressAllowanceOfficer类:empClassvehicle职员类,具 有姓名和性 别两个属性工人类,继承了父 类的姓名和性别属 性外还包含类别和 是否有服装津贴属性主任类,还包含 级别和是

11、否配备 交通工具属性16extends关键字 extends关键字用于继承类。 声明一个继承父类的类的通常形式如下: class subclass-name extends superclass-name /类体 没有extends,默认父类为Object 只能有一个父类,即单继承 子类继承父类的全部成员注意17super关键字 super关键字用来解决如何直接访问或 初始化从父类继承来的属性。 super有两种通用形式:调用父类的构 造函数、用来访问被子类的成员覆盖的父类成员。 它用在对象的构造函数中,将构造细节 通过继承链往上传递。 super()必须是在子类构造函数中的第 一个执行语句。

12、18继承示例class Employee String name; /姓名char sex; /性别Employee(String n, char s)name = n; sex = s;public String getName() return name; public char getSex() return sex;class Worker extends Employee char category;/类别boolean dressAllowance; /是否提供服装津贴 Worker(String n,char s,char c,boolean d)super(n,s); cate

13、gory = c; dressAllowance = d;public char getCategory()return category; public boolean getAll() return dressAllowance; class InheDemo public static void main(String args) Worker w = new Worker(“M.John“,M,B,true);System.out.println(“工人信息“);System.out.println(“姓名 : “+w.getName();System.out.println(“性别

14、: “+w.getSex();System.out.println(“类别 : “+w.getCategory();if(w.getAll()System.out.println(“提供服装津贴“);elseSystem.out.println(“未提供服装津贴”); 19类型转换 执行自动类型转换需要两个条件: 接受转换的两种类型是兼容的 目的类型数的范围比源类型的大 强制类型转换语句的通用格式如下: (目标类型)valueUndergraduateStudent s1 = new UndergraduateStudent(); Graduate s2=new Graduate(); Stu

15、dent x; x=s1; Graduate s3=new Graduate(); if (x instanceof Graduate)s3= (Graduate)x; 注意:从父类到子类 的转换,建议在转换 前判断父类是否指向 子类的对象20Object 类 Object类是类体系结构的根 Java 系统中的每个类都是 Object 类 直接或间接的子类 Object 类包括在 java.lang 包中 此类定义了所有对象都具备的基本状态 和行为 可以用类型为Object的变量来引用任意 类型的对象 21方法覆盖(override) 方法覆盖是Java实现多态性机制的另一种方式。 在类层次结构中,如果子类中的一个方法与父类 中的方法有相同的方法名并具有相同数量和类型 的参数列表,这种情况称为方法覆盖。 当一个覆盖方法通过父类引用被调用,Java根据 当前被引用对象的类型来决定执行哪个版本的方 法。 可以通过super关键字调用直属父类中被覆盖的 方法版本。22方法覆盖示例class SuperClass int a;SuperClass() a = 10; public void printA()System.out.println(“父类中a =“+a); class

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号