《面向对象程序设计类和对象优秀PPT.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计类和对象优秀PPT.ppt(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象程序设计类和对象面向对象程序设计类和对象第一页,本课件共有24页回顾Java 具有8种基本数据类型:int、boolean、char、short、long、float 及 doubleJava 中的运算符可划分为四大子集:算术运算符、位运算符、关系运算符、逻辑运算符Java 支持下列控制结构:选择、循环、跳转数组可用来将同一类型的数据存储在连续的内存位置2第二页,本课件共有24页目标掌握如何创建类和构造对象掌握方法的重载和覆盖了解类的继承了解包概念3第三页,本课件共有24页类和对象对象表示现实世界中某个具体的事物。抽象是从特定的实例中抽取共同的性质以形成一般化概念的过程。对象具有两方面
2、的含义:9 在现实世界中:在现实世界中:是客观世界中的一个实体是客观世界中的一个实体是客观世界中的一个实体是客观世界中的一个实体9 在计算机世界中:在计算机世界中:是一个可标识的存储区域是一个可标识的存储区域是一个可标识的存储区域是一个可标识的存储区域4第四页,本课件共有24页类和对象类是具有共同属性和行为的对象的抽象。类可以定义为数据和方法的集合。类也称为模板,因为它们提供了对象的基本框架。类对象抽抽象象实实例例化化属性或状态属性或状态操作或行为操作或行为数据或变量数据或变量方法方法封装的实体=数据+方法5第五页,本课件共有24页创建类 class name type variable1;t
3、ype variableN;type methodname1(parameter-list)/方法体 type methodnameN(parameter-list)/方法体 在类中,属性是通过成员变量在类中,属性是通过成员变量体现的,而操作是用成员函数体现的,而操作是用成员函数(又称为方法)实现的。(又称为方法)实现的。Java中定义类的通用格式:中定义类的通用格式:成员变量(对象属性)成员方法(对象行为或操作)6第六页,本课件共有24页定义方法定义方法的一般格式:access type methodname1(parameter-list)/方法体发往某个对象的消息对应于一个发往某个对象的
4、消息对应于一个方法调用。作为对消息的响应,方法调用。作为对消息的响应,对象将执行一个类似于过程体的对象将执行一个类似于过程体的方法。方法是包含在类中的函数。方法。方法是包含在类中的函数。方法名称返回类型修饰符,可选参数列表,可选举例:举例:public void setdate(int day,int month,int year)day=23;month=7;year=2003;7第七页,本课件共有24页this引用public class PassTest int x;PassTest(int x)this.x=x;public void passingValue()System.out.
5、println(“x 等于等于 +x);public static void main(String args)PassTest test=new PassTest(10);test.passingValue();v关键字关键字 this 与对象关联与对象关联v它用于指示当前对象它用于指示当前对象指明此对象的变量 x 应赋值为通过构造函数传递的自变量 x 的值。8第八页,本课件共有24页简单访问控制-private 和 publicpublic 声明的数据成员和成员函数可从类外部的任何地方访问。而private 数据将被隐藏,在类外不可见,这就实现了数据封装的思想。要从类外操纵private
6、成员,只能通过类的public或protected成员来实现。9第九页,本课件共有24页方法重载(overloading)方法重载是Java实现面向对象的多态性机制的一种方式。同一个类中多个方法有相同的名字,不同的参数列表,这种情况称为方法重载。返回类型不同并不足以构成方法重载。当重载方法被调用时,编译器根据参数的类型和数量来确定实际调用哪个重载方法的版本。10第十页,本课件共有24页方法重载示例class Calculation public void add(int a,int b)int c=a+b;System.out.println(两个整数相加得+c);public void ad
7、d(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第十一页,本课件共有24
8、页构造函数构造函数名称与类名称相同构造函数没有返回类型其任务是在创建对象时初始化其内部状态class Fruit boolean seedLess;boolean seasonal;float price;Fruit(boolean seed,boolean season,float p)seedLess=seed;seasonal=season;price =p;12第十二页,本课件共有24页创建对象使用下列语法可创建对象:new 构造函数关键字 new 通常称为创建运算符,用于分配对象内存,并将该内存初始化为缺省值。一旦 new 完成分配和初始化内存,它就将调用构造函数来执行对象初始化。当
9、创建一个类时,只是创建当创建一个类时,只是创建了一种新的数据类型。对象了一种新的数据类型。对象是类的一个实例。是类的一个实例。class FruitDemo public static void main(String args)Fruit f=new Fruit(true,false,50.0F);创建对象13第十三页,本课件共有24页缺省初始值Java 保证了在任何代码使用该内存之前,已至少将内存初始化为可预知的缺省值 类型缺省值类型缺省值byte(byte)0charu0000 short(short)0float0.0Fint0double0.0Dlong0L对象引用nullboole
10、anfalse14第十四页,本课件共有24页重载构造函数Java 为每一个类自动提供缺省构造函数缺省构造函数将成员变量的值初始化为缺省值一旦创建了自己的构造函数,缺省的构造函数将不复存在。重载构造函数提供了一组创建对象的方式,可以根据需要决定是否带初始参数。public class constructOverload int x;constructOverload()x=0;System.out.println(不带参数的构造函数不带参数的构造函数);constructOverload(int x)this.x=x;System.out.println(带一个参数的构造函数带一个参数的构造函数
11、);15第十五页,本课件共有24页继承被继承的类称为父类继承父类的类称为子类执行继承时,子类将获得父类的属性,并具有自身特有的属性。继承是面向对象编程技术的一块基石,继承是面向对象编程技术的一块基石,它允许创建分等级层次的类。运用继承,它允许创建分等级层次的类。运用继承,可以创建一个通用类定义一系列一般特可以创建一个通用类定义一系列一般特性。该类可以被更具体的类继承性。该类可以被更具体的类继承Emoloyee类:类:name sexWorker类:类:category dressAllowanceOfficer类:类:empClass vehicle职员类,具有姓名和性别两个属性工人类,继承了
12、父类的姓名和性别属性外还包含类别和是否有服装津贴属性主任类,还包含级别和是否配备交通工具属性16第十六页,本课件共有24页extends关键字extends关键字用于继承类。声明一个继承父类的类的通常形式如下:class subclass-name extends superclass-name /类体 没有没有extends,默认父类为,默认父类为Object只能有一个父类,即单继承只能有一个父类,即单继承子类继承父类的全部成员子类继承父类的全部成员注意注意17第十七页,本课件共有24页super关键字super关键字用来解决如何直接访问或初始化从父类继承来的属性。super有两种通用形式:
13、调用父类的构造函数、用来访问被子类的成员覆盖的父类成员。它用在对象的构造函数中,将构造细节通过继承链往上传递。super()必须是在子类构造函数中的第一个执行语句。18第十八页,本课件共有24页继承示例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;/类别类别 b
14、oolean 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.
15、out.println(工人信息工人信息);System.out.println(姓名姓名:+w.getName();System.out.println(性别性别:+w.getSex();System.out.println(类别类别:+w.getCategory();if(w.getAll()System.out.println(提供服装津贴提供服装津贴);else System.out.println(“未提供服装津贴未提供服装津贴”);19第十九页,本课件共有24页类型转换执行自动类型转换需要两个条件:接受转换的两种类型是兼容的接受转换的两种类型是兼容的目的类型数的范围比源类型的大目的
16、类型数的范围比源类型的大强制类型转换语句的通用格式如下:(目标类型)valueUndergraduateStudent s1=new UndergraduateStudent();Graduate s2=new Graduate();Student x;x=s1;Graduate s3=new Graduate();if(x instanceof Graduate)s3=(Graduate)x;注意:从父类到子类的转换,建议在转换前判断父类是否指向子类的对象20第二十页,本课件共有24页Object 类Object类是类体系结构的根Java 系统中的每个类都是 Object 类直接或间接的子类
17、Object 类包括在 java.lang 包中此类定义了所有对象都具备的基本状态和行为可以用类型为Object的变量来引用任意类型的对象 21第二十一页,本课件共有24页方法覆盖(override)方法覆盖是Java实现多态性机制的另一种方式。在类层次结构中,如果子类中的一个方法与父类中的方法有相同的方法名并具有相同数量和类型的参数列表,这种情况称为方法覆盖。当一个覆盖方法通过父类引用被调用,Java根据当前被引用对象的类型来决定执行哪个版本的方法。可以通过super关键字调用直属父类中被覆盖的方法版本。22第二十二页,本课件共有24页方法覆盖示例class SuperClass int a
18、;SuperClass()a=10;public void printA()System.out.println(父类中a=+a);class SubClass extends SuperClass int a;SubClass(int a)this.a=a;public void printA()System.out.println(子类中a=+a);public class OverrideDemo public static void main(String args)SuperClass s1=new SubClass(10);s1.printA();将调用子类的printA方法23第二十三页,本课件共有24页总结对象代表现实世界中的实体 类是对象的抽象,将对象的属性和行为 抽象为类中的数据和方法。在 Java 中,extends 关键字用于继承类。super关键字用来解决如何直接访问或初始化从父类继承来的属性。构造函数没有返回类型,名称与类的名称相同。关键字 this 与对象关联用于指明当前对象。24第二十四页,本课件共有24页