第三章面向对象编程精选文档.ppt
《第三章面向对象编程精选文档.ppt》由会员分享,可在线阅读,更多相关《第三章面向对象编程精选文档.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章面向对象编程第三章面向对象编程本讲稿第一页,共六十三页本章知识要点:本章知识要点:定义继承、多态、重载、覆盖和虚拟方法调用定义继承、多态、重载、覆盖和虚拟方法调用使用访问修饰符使用访问修饰符protectedprotected和和“友元包友元包”描述构造器和方法重载的概念描述构造器和方法重载的概念描述完整的对象构造和初始化操作描述完整的对象构造和初始化操作在在javajava程序中识别下列内容程序中识别下列内容重载方法和构造器重载方法和构造器使用使用thisthis来调用重载的构造器来调用重载的构造器覆盖方法覆盖方法调用超类方法调用超类方法父类构造器父类构造器调用父类构造器调用父类构造器
2、类设计本讲稿第二页,共六十三页面向对象的思想概述面向对象的思想概述1.1.面面向向对对象象的的编编程程思思想想力力图图使使对对计计算算机机语语言言中中对对事事物物的的的的描描述述与与现现实实世世界界中中该该事事物的本来面目尽可能的一致。物的本来面目尽可能的一致。2.2.类类(class)class)和和对对象象(object)object)是是面面向向对对象象方方法法的的核核心心概概念念。类类是是对对一一类类事事物物描描述述,是是抽抽象象的的、概概念念上上的的定定义义;对对象象是是实实际际存存在在的的该该类类事事物物的的每每个个个个体体,因因而而也也称称实例实例(instance)instan
3、ce)。本讲稿第三页,共六十三页类和对象类和对象(1)对象表示现实世界中某个具体的事物。对象表示现实世界中某个具体的事物。抽象是从特定的实例中抽取共同的性质以形抽象是从特定的实例中抽取共同的性质以形成一般化概念的过程。成一般化概念的过程。对象具有两方面的含义:对象具有两方面的含义:9 在现实世界中:是客观世界中的一个实体是客观世界中的一个实体9 在计算机世界中:是一个可标识的存储区域本讲稿第四页,共六十三页类和对象类和对象(2)类是具有共同属性类是具有共同属性和行为的对象的抽和行为的对象的抽象。象。类可以定义为数据类可以定义为数据和方法的集合。和方法的集合。类也称为模板,因类也称为模板,因为它
4、们提供了对象为它们提供了对象的基本框架。的基本框架。类对象抽抽象象实实例例化化属性或状态属性或状态操作或行为操作或行为数据或变量数据或变量方法方法封装的实体=数据+方法本讲稿第五页,共六十三页创建类创建类 classnametypevariable1;typevariableN;typemethodname1(parameter-list)/方法体方法体typemethodnameN(parameter-list)/方法体方法体 在类中,属性是通过成员变量在类中,属性是通过成员变量体现的,而操作是用成员函数体现的,而操作是用成员函数(又称为方法)实现的。(又称为方法)实现的。Java中定义类的
5、通用格式:中定义类的通用格式:成员变量(对象属性)成员方法(对象行为或操作)本讲稿第六页,共六十三页类和对象举例定义一个类定义一个类:class Person int age;int getAge()return age;void setAge(int i)age=i;声明并创建一个声明并创建一个Person类的对象,将该对象命名为类的对象,将该对象命名为a:Person a=new Person();调用对象调用对象a中的方法中的方法:a.setAge(36);本讲稿第七页,共六十三页声明属性语法格式:type =defaultValue;举例:public class Person pri
6、vate int age;public String name=“Lila”;本讲稿第八页,共六十三页定义方法定义方法定义方法的一般格式:定义方法的一般格式:accesstypemethodname1(parameter-list)/方法体方法体发往某个对象的消息对应于一个方发往某个对象的消息对应于一个方法调用。作为对消息的响应,对象法调用。作为对消息的响应,对象将执行一个类似于过程体的方法。将执行一个类似于过程体的方法。方法是包含在类中的函数。方法是包含在类中的函数。方法名称返回类型修饰符,可选参数列表,可选举例:举例:publicvoidsetdate(intday,intmonth,in
7、tyear)day=23;month=7;year=2003;本讲稿第九页,共六十三页构造方法构造方法构造函数名称与类名称相同构造函数名称与类名称相同构造函数没有返回类型构造函数没有返回类型其任务是在创建对象时初始化其内部状态其任务是在创建对象时初始化其内部状态classFruitbooleanseedLess;booleanseasonal;floatprice;Fruit(booleanseed,booleanseason,floatp)seedLess=seed;seasonal=season;price=p;本讲稿第十页,共六十三页默认的构造方法(默认的构造方法(1)JavaJava语
8、言中,每个类都至少有一个构造方法;语言中,每个类都至少有一个构造方法;如如果果类类的的定定义义者者没没有有显显式式的的定定义义任任何何构构造造方方法法,系系统统将将自动提供一个默认的构造方法:自动提供一个默认的构造方法:默认构造方法没有参数默认构造方法没有参数默认构造方法没有方法体默认构造方法没有方法体JavaJava类类中中,一一旦旦类类的的定定义义者者显显式式定定义义了了一一个个或或多多个个构构造方法,系统将不再提供默认的构造方法;造方法,系统将不再提供默认的构造方法;本讲稿第十一页,共六十三页默认的构造方法(默认的构造方法(2)类的定义类的定义:public class Person p
9、rivate int age;public void setAge(int w)age=w;等价于:等价于:public class Person private int age public Person()public void setAge(int w)age=w;应用举例:应用举例:public class Test public static void main(String args)Person d=new Person();d.setAge(120);本讲稿第十二页,共六十三页创建对象创建对象使用下列语法可创建对象:使用下列语法可创建对象:new 构造函数构造函数关键字关键字
10、new 通常称为创建运算符,用于分通常称为创建运算符,用于分配对象内存,并将该内存初始化为缺省值。配对象内存,并将该内存初始化为缺省值。一旦一旦 new 完成分配和初始化内存,它就将完成分配和初始化内存,它就将调用构造函数来执行对象初始化。调用构造函数来执行对象初始化。当创建一个类时,只是创建当创建一个类时,只是创建了一种新的数据类型。对象了一种新的数据类型。对象是类的一个实例。是类的一个实例。classFruitDemopublicstaticvoidmain(Stringargs)Fruitf=newFruit(true,false,50.0F);创建对象本讲稿第十三页,共六十三页练习分析
11、并编译、运行下面的源文件,体会类的定义、对象的创建、对象成分析并编译、运行下面的源文件,体会类的定义、对象的创建、对象成员方法的调用、类的定义和应用程序在源文件结构上的不同;员方法的调用、类的定义和应用程序在源文件结构上的不同;/源文件源文件A.javapublic class A public void m1()System.out.println(hi);/源文件源文件Test.javapublic class Test public static void main(String args)A hello=new A();hello.m1();本讲稿第十四页,共六十三页面向对象的应用举例
12、(1)程序程序BirthDate.java:public class BirthDate private int day;private int month;public int year;public void setDay(int d)day=d;public void setMonth(int m)month=m;public void setYear(int y)year=y;public int getDay()return day;public int getMonth()return month;public int getYear()return year;public voi
13、d show()System.out.println(day+-+month+-+year);本讲稿第十五页,共六十三页面向对象的应用举例(2)程序程序ObjectOperating.java:public class ObjectOperating public static void main(String args)BirthDate b=new BirthDate();b.setDay(25);b.setMonth(12);b.setYear(2003);b.day=2;b.year=2003;b.show();本讲稿第十六页,共六十三页Java中的访问修饰符JavaJava中共有四种
14、访问修饰符:中共有四种访问修饰符:1 1、public public:完全公开,没有类或包的限制完全公开,没有类或包的限制2 2、protectedprotected:强调继承关系,没有包的限制强调继承关系,没有包的限制3 3、defaultdefault:有包的限制,没有类的限制,有包的限制,没有类的限制,对于同一包中对于同一包中的类来说,相当于的类来说,相当于publicpublic修饰符。也可叫做修饰符。也可叫做package privatepackage private4 4、private:private:有包的限制,同时也有类的限制,只能被同一个类有包的限制,同时也有类的限制,只能
15、被同一个类中的成员函数或内部类访问。中的成员函数或内部类访问。本讲稿第十七页,共六十三页关于访问权限的习题测试privatefriendlyprotectedpublic同一类同包不同类同包子类不同包子类不同包不同类calssuseYYYYNYYY NYYY NNYYNNNY下题每空下题每空5 5分,测测您的分数:分,测测您的分数:本讲稿第十八页,共六十三页实例验证在同在同一个一个类中类中package accessdemo;public class SuperClasspublic void testPublic()System.out.println(a public method in
16、superclass);protected void testProtected()System.out.println(a protected method in superclass);void testFriendly()System.out.println(a friendly method in superclass);private void testPrivate()System.out.println(a private method in superclass);public static void main(String args )SuperClass sc=new Su
17、perClass();sc.testPublic();sc.testProtected();sc.testFriendly();sc.testPrivate();本讲稿第十九页,共六十三页实例验证同一同一包不包不同类同类package accessdemo;import accessdemo.SuperClass;public class SamePackOtherClasspublic static void main(String args)SuperClass s=new SuperClass();s.testPublic();s.testProtected();s.testFriend
18、ly();s.testPrivate();s.testPrivate();本讲稿第二十页,共六十三页实例验证同一同一包子包子类类package accessdemo;import accessdemo.SuperClass;public class SamePackSubClass extends SuperClasspublic static void main(String args)SamePackSubClass s1=new SamePackSubClass();s1.testPublic();s1.testProtected();s1.testFriendly();s1.testP
19、rivate();s1.testPrivate();本讲稿第二十一页,共六十三页实例验证不同不同包子包子类类package accessdemo.otherpack;import accessdemo.SuperClass;public class OtherPackSubClass extends SuperClasspublic static void main(String args)OtherPackSubClass s1=new OtherPackSubClass();s1.testPublic();s1.testProtected();s1.testFriendly();s1.te
20、stPrivate();s1.testFriendly();s1.testPrivate();本讲稿第二十二页,共六十三页实例验证不同不同包不包不同类同类package accessdemo.otherpack;import accessdemo.SuperClass;public class OtherPackOtherClasspublic static void main(String args)SuperClass s=new SuperClass();s.testPublic();s.testProtected();s.testFriendly();s.testPrivate();s
21、.testProtected();s.testFriendly();s.testPrivate();本讲稿第二十三页,共六十三页继承 继承表示一个类从其它类中获得结构和行为(子类/父类)又名普遍化 交通工具是一个父类 地面交通工具和空中交通工具是子类VehicleGroundVehicleAirVehicleThe arrow points toward the superclass本讲稿第二十四页,共六十三页继承继承通常被称为“is-a”或“kind-of”一个子类的实例也“is a”父类的实例 一个子类的实例是“kind-of”父类本讲稿第二十五页,共六十三页多层次ACarisakindo
22、fGroundVehiclewhichisakindofVehicleVehicle and AirVehicle areancestors of AirplaneAirVehicle and Airplane are descendants of VehicleVehicleGroundVehicleAirVehicleCarTruckAirplaneHelicopter本讲稿第二十六页,共六十三页继承操作属性在继承结构的最高一层定义属性在继承结构的最高一层定义所有子类的实例能够继承这些操作所有子类的实例能够继承这些操作每个子类可以增加或重新定义继承的属性每个子类可以增加或重新定义继承的属性
23、GroundVehiclelicenseNumberweightregister()CarTrucktonnagecalculateTax()A truck has three attributes:licenseNumberweighttonnageand two operations:registercalculateTax本讲稿第二十七页,共六十三页继承关系 关系也可以继承 每个子类都可以分享继承的关系GroundVehiclelicenseNumberweightregister()A truck has an ownerCarTrucktonnagecalculateTax()Own
24、erPerson1.*and a car has an owner1owner本讲稿第二十八页,共六十三页覆盖方法 子类可以修改从父类继承的行为。子类可以创建同父类的方法不同功能的方法,但方法名、返回值类型、参数列表必须一致。要求:1.方法声明形式一致 2.方法权限不允许缩小 3.覆盖的方法不允许抛出比父类方法更多的异常本讲稿第二十九页,共六十三页方法覆盖的示例classA1voidcallme()System.out.println(“在在A1的的callme()成员函数里成员函数里”);classB1extendsA1voidcallme()System.out.println(“在在B1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 面向 对象 编程 精选 文档
限制150内