《项目二Box类的变.ppt》由会员分享,可在线阅读,更多相关《项目二Box类的变.ppt(40页珍藏版)》请在三一办公上搜索。
1、项目二 Box类的变幻模块1 创建一个类模块2 构造函数的使用,四、预备知识,面向对象的程序设计语言广泛的应用于程序设计,并且有许多新的发展,出现了更多的面向对象的语言。,面向对象的由来和发展,四、预备知识,类,对象,继承,类是以接口和实现来定义对象行为的样板,对象是由类来创建的,已存在的类具有建立子类的能力,进而建立类的层次。,面向对象系统三要素,面向对象程序设计(OOP)有三个特征:封装:将对象的定义和对象的实现分开(1)模块化(2)信息隐藏继承:体现父类与子类之间的相互关系(1)实现代码复用(2)简化设计过程多态:一个方法,多种形态解决其他语言中不能重名的问题面向对象程序设计的核心:对象
2、,对象,对象是具有某些特殊属性和行为方式(方法)的实体。,对象的示例,收银员对象,顾客对象,顾客姓名:朱丽叶年龄:28体重:52千克操作:购买商品,属性,姓名:布兰尼职衔:收银员年龄:35体重:60千克操作:收款打印帐单,行为,对象的示例,对象有两个特征:属性(Property)和行为(Behavior),如汽车有颜色、重量、车型、发动机功率、速度等属性,有发动、加速、减速、停止、倒车等行为。一个人的属性有:姓名、性别、年龄、身高、体重等,行为有:唱歌、打球、骑车、学习等。,属性,事物的属性在类中表示为变量,住址,姓名,属性,年龄,“在类中表示对象或实体拥有的特性称为属性。”,方法,“对象执行
3、的操作称为方法。”,方法的示例,缝衣服的步骤,量尺寸,得到工具,缝衣服,方法,缝制衣服,裁缝,类,类是具有相同属性和行为的一组对象的集合,形状类,动物类,汽车类,类的示例,类和对象的示例,收银员,系统管理员,仓库管理员,促销员,采购经理,类和对象的关系,类是具有共同属性和行为的对象的抽象。对象是具有特殊属性和行为方式的实体。,类,对象,抽象,实例化,操作或行为,属性或状态,方法,数据或变量,类的定义,类的定义格式为:,类修饰符class 类名(=);(=);方法修饰符 方法返回值类型 方法名1(参数列表)/方法体 方法修饰符 方法返回值类型 方法名n(参数列表)/方法体,成员变量(对象属性),
4、成员方法(对象行为或操作),类修饰符可用private、protected、public或default,成员变量,定义格式:(=)修饰符可以为:访问修饰符public:表示公共变量,允许任何程序包中的类访问,其作用域最广。private:表示私有变量,只能被定义它的类中的方法访问。protected:表示受保护变量,允许类自身子类以及在同一个包中的所有类访问。默认:允许类自身以及在同一个包中的所有类的变量访问。存在修饰符static:final:,数据类型可以为Java中任意的数据类型。在每一个类中成员变量是唯一的。,例如,定义一个类Box,类中包含3个成员变量width、height和de
5、pth,目前先不定义方法。class Box double width;double height;double depth;,成员方法,定义方法的一般格式:方法修饰符 方法返回值类型 方法名(参数列表)/方法体,如果方法具有返回类型,则必须使用关键字return返回值。如果方法根本没有返回值,则应当使用void。,例如:在Box类中添加一个方法,求出Box的表面积。class Box double width;double height;double depth;void area()double a;a=2*(width*height+depth*height+width*depth);S
6、ystem.out.print(area is+a);,类的对象,类是创建对象的一个模板。当使用一个类创建一个对象时,即给出了这个类的一个实例。对象的创建:第一步,对象的声明:类名 对象名称;如Box box1;第二步,为声明的对象分配内存:使用new运算符和类的构造方法为声明的对象分配内存。如box1=new Box();对象的声明和分配内存可以一起进行:Box box1=new Box();,使用对象对象不仅可以使用自己的变量,而且可以使用创建它的类中的方法。对象通过使用运算符“.”实现对变量的访问和方法的调用。对象名.成员变量名;对象名.成员方法名(参数列表);例201,构造方法(构造函
7、数),每当创建给定类的实例时就调用的方法,它们与类同名,但没有返回类型当使用new创建类的实例时,Java 为对象分配内存,初始化实例变量并调用构造方法每个类都定义有构造方法,以便初始化其成员变量,两种构造方法默认构造方法:如果一个类中没有定义构造方法,系统将提供一个默认的构造方法。它不带任何参数,也没有任何操作语句。在创建对象时,系统利用默认的构造方法对对象进行初始化。参数化构造方法:在类定义中进行编码。在创建类的对象时,传递的值和构造方法的参数应当在个数、次序和数据类型上匹配。例202、203,访问修饰符,访问修饰符,小技巧:1)类方法的访问修饰符通常为public,类变量的访问修饰符通常
8、为private。2)访问修饰符使用最多的是public和private。,方法修饰符,static 修饰符当定义一个类成员(成员变量或成员方法)时,对它的使用不依赖于任何对象,则该成员前面必须加上关键字static。成员声明为static后,在创建该类的任何对象之前就可以访问它。如,类中的main()方法被声明为static,则不用创建该类的实例就可以首先调用它。,static修饰符修饰的变量叫静态变量,也称为类变量。没有 static修饰的变量是实例变量。类变量是属于这个类的所有对象的变量,应用于类和它的所有实例,可以通过“类.变量名”(或“对象.变量名”)来调用。而实例变量属于某个对象,
9、只能通过“对象.变量名”来调用。static修饰符修饰的方法叫静态方法,也称为类方法。一个类中的静态方法,可直接用“类名称.静态方法名”调用。例204:定义一个方法,用于判断一个数是否是回文,项目二 Box类的变幻模块3 方法重载模块4 继承,继承,你是如何理解继承这个术语的?狮子总是象它的父母一样猎食和吼叫,因为幼狮从它的父母那里继承了特征和行为;龙生龙,凤生凤,老鼠的儿子会打洞;遗产继承,父 类,子类,类继承的实现extends关键字用于继承类。声明一个继承父类的类的通常形式如下:class 子类名 extends 父类名/类体 若没有extends关键字,表示默认父类为Object只能有
10、一个父类,即单继承子类继承父类中访问控制为public、protected、default的成员变量和成员方法,不能继承private的成员变量和成员方法。例205、206,注意,被继承的类称为父类或超类继承父类的类称为子类执行继承时,子类将获得父类的属性,并具有自身特有的属性。,子类构造方法子类的构造方法的名称也与子类名相同,创建子类的对象时将调用此构造方法。子类永远不会继承父类的构造方法。除了构造方法之外,父类的所有方法和属性均由子类的对象继承。子类构造方法可以调用父类构造方法,父类构造方法的调用总是先于子类构造方法的调用。例207,成员变量的隐藏和方法的重写在类的继承中,如果在子类中定义
11、了与父类同名的成员变量,则父类的成员变量不能被直接使用,此时称子类的成员变量隐藏了父类的成员变量。当子类中定义了一个方法,且这个方法的名字、返回类型、形参的数据类型及个数与父类的某个方法完全相同时,父类的这个方法也将被隐藏,即不能被子类所继承使用。此时称子类重写了父类的方法。如果想在子类中使用被子类隐藏的父类的成员变量或方法,可以使用super关键字。,Super关键字经常在以下情况下使用:(1)访问被隐藏的成员变量或成员方法:super.成员变量名;或super.成员方法名(参数);(2)调用父类的构造方法:super(参数);或super();注意,该语句应为子类构造方法中的第一个语句。super()方法始终指向调用类的父类。例208,多态是指“多种形式”。多态是面向对象程序设计中的又一个重要特性,是软件复用的强大机制。多态包括方法重载和方法重写。,多态,方法重载,类中有多个具有相同名称的方法,例209,构造方法的重载:例210构造方法重载和普通方法重载的区别在于构造方法在创建对象的同时调用,而普通方法的重载都是在创建对象后由对象调用。,例211、212,