好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

26页
  • 卖家[上传人]:宝路
  • 文档编号:47674434
  • 上传时间:2018-07-04
  • 文档格式:PPT
  • 文档大小:281.14KB
  • / 26 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第三章类和对象1回顾• Java 具有8种基本数据类型:int、boolean 、char、short、long、float 及 double • Java 中的运算符可划分为四大子集:算术 运算符、位运算符、关系运算符、逻辑运算 符 • Java 支持下列控制结构:选择、循环、跳 转 • 数组可用来将同一类型的数据存储在连续的 内存位置2目标• 掌握如何创建类和构造对象• 掌握方法的重载和覆盖• 了解类的继承• 了解包概念3类和对象• 对象表示现实世界中某个具体的事物 • 抽象是从特定的实例中抽取共同的性质 以形成一般化概念的过程 • 对象具有两方面的含义:99 在现实世界中:在现实世界中:• •是客观世界中的一个实体是客观世界中的一个实体99 在计算机世界中:在计算机世界中:• •是一个可标识的存储区域是一个可标识的存储区域4类和对象• 类是具有共同属 性和行为的对象的 抽象 • 类可以定义为数 据和方法的集合 • 类也称为模板, 因为它们提供了对 象的基本框架类对象抽象实例化属性或状态操作或行为数据或变量方法封装的实体=数据+方法5创建类 class name {type variable1;…type variableN;type methodname1(parameter-list){//方法体}…type methodnameN(parameter-list){//方法体}} 在类中,属性是通过成员变 量体现的,而操作是用成员 函数(又称为方法)实现的 。

      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 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 声明的数据成员和 成员函数可从类外部的任 何地方访问 • 而private 数据将被隐藏 ,在类外不可见,这就实 现了数据封装的思想 • 要从类外操纵private 成 员,只能通过类的public 或protected成员来实现 9方法重载(overloading)• 方法重载是Java实现面向对象的多态性机 制的一种方式 • 同一个类中多个方法有相同的名字,不同 的参数列表,这种情况称为方法重载 • 返回类型不同并不足以构成方法重载 • 当重载方法被调用时,编译器根据参数的 类型和数量来确定实际调用哪个重载方法 的版本10方法重载示例class Calculation {public void add( int a, int 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 = 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创建对象 • 使用下列语法可创建对象:new 构造函数 • 关键字 new 通常称为创建运算符,用于分 配对象内存,并将该内存初始化为缺省值。

      • 一旦 new 完成分配和初始化内存,它就将 调用构造函数来执行对象初始化 当创建一个类时,只是 创建了一种新的数据类 型对象是类的一个实 例class FruitDemo {public static void main(String args[]){Fruit f = new Fruit(true,false,50.0F);} } 创建对象13缺省初始值• Java 保证了在任何代码使用该内存之前 ,已至少将内存初始化为可预知的缺省值 类型缺省值类型缺省值byte(byte)0char'\u0000 ' short(short)0float0.0Fint0double0.0Dlong0L对象引用nullbooleanfalse14重载构造函数• Java 为每一个类自动提供缺省构造函 数 • 缺省构造函数将成员变量的值初始化 为缺省值 • 一旦创建了自己的构造函数,缺省的 构造函数将不复存在 • 重载构造函数提供了一组创建对象的 方式,可以根据需要决定是否带初始 参数 public class constructOverload {int x;constructOverload() {x=0;System.out.println(“不带参数的构造函数“);}constructOverload(int x){this.x=x;System.out.println(“带一个参数的构造函数“);} } 15继承 • 被继承的类称为父类 • 继承父类的类称为子类 • 执行继承时,子类将获得父类的属性,并 具有自身特有的属性。

      继承是面向对象编程技术的一块 基石,它允许创建分等级层次的 类运用继承,可以创建一个通 用类定义一系列一般特性该类 可以被更具体的类继承Emoloyee类:namesexWorker类:categorydressAllowanceOfficer类:empClassvehicle职员类,具 有姓名和性 别两个属性工人类,继承了父 类的姓名和性别属 性外还包含类别和 是否有服装津贴属性主任类,还包含 级别和是否配备 交通工具属性16extends关键字• extends关键字用于继承类 • 声明一个继承父类的类的通常形式如下: class subclass-name extends superclass-name {//类体} ò 没有extends,默认父类为Object ò 只能有一个父类,即单继承 ò 子类继承父类的全部成员注意17super关键字• super关键字用来解决如何直接访问或 初始化从父类继承来的属性 • super有两种通用形式:调用父类的构 造函数、用来访问被子类的成员覆盖的父类成员 • 它用在对象的构造函数中,将构造细节 通过继承链往上传递 • super()必须是在子类构造函数中的第 一个执行语句。

      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); category = 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(“性别 : “+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(); Student 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 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.