《第4章面向对象编程(下).ppt》由会员分享,可在线阅读,更多相关《第4章面向对象编程(下).ppt(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第4章章 面向对象编程(下)面向对象编程(下)主讲:郭永锋电话:13603825601E-mail:本讲目标本讲目标掌握属性存取器的使用掌握属性存取器的使用掌握掌握super关键字关键字掌握掌握final关键字关键字掌握掌握abstract关键字关键字理解抽象类与抽象方法理解抽象类与抽象方法理解并掌握接口的定义与使用理解并掌握接口的定义与使用属性存取器(重点、理解)属性存取器(重点、理解)指用于对类的指用于对类的属性(成员变量)属性(成员变量)进行进行存取存取的的方法方法。例例:public class Dog private String name;/属性存取器属性存取器 public v
2、oid setName(String name)this.name=name;public String getName()return this.name;super关键字(理解)关键字(理解)osuper指指“我父亲我父亲”,要要和和this对照理解对照理解。o如果我们如果我们如果我们如果我们在子类中想使用被子类隐藏了的父类的成员在子类中想使用被子类隐藏了的父类的成员在子类中想使用被子类隐藏了的父类的成员在子类中想使用被子类隐藏了的父类的成员变量或成员方法就可以使用关键字变量或成员方法就可以使用关键字变量或成员方法就可以使用关键字变量或成员方法就可以使用关键字supersuper。例如:例
3、如:o /访问父类对象的访问父类对象的brand成员方法成员方法 super.brand=“金毛金毛”;o super.eat();/调用父类对象的调用父类对象的eat成员方法成员方法final关键字(理解)关键字(理解)ofinal 关键字可以修饰关键字可以修饰类类、成员变量成员变量、成员方法成员方法和和局部变量局部变量,但作用各不相同。,但作用各不相同。ofinal修饰修饰类类,则类,则类不能被继承不能被继承(不能有子类不能有子类)final class Dog o例如例如 String类就是类就是final的的final关键字关键字ofinal修饰修饰成员变量成员变量,要求该成员变量,要
4、求该成员变量必须初始化必须初始化,而且值而且值以后不能修改以后不能修改ofinal 修饰修饰成员方法成员方法,表示该方法表示该方法不能被子类重不能被子类重写写(override)ofinal修饰修饰局部变量局部变量,该局部变量就会成,该局部变量就会成常量常量abstract只能修饰只能修饰类类或或方法方法。1)用)用abstract修饰的类称为修饰的类称为抽象类。抽象类。例如:例如:abstract class People abstract关键字(理解)关键字(理解)abstract关键字关键字用用abstract修饰的方法称修饰的方法称抽象方法抽象方法。例如:例如:public abstr
5、act void eat();1)抽象方法)抽象方法没有方法体没有方法体,即:抽象方法,即:抽象方法只允许只允许声明,不允许实现。声明,不允许实现。2)抽象方法只能存在于)抽象方法只能存在于抽象类抽象类和和接口接口中。中。1 1)abstractabstract类类类类不能使用不能使用不能使用不能使用newnew运算符创建该类的对象运算符创建该类的对象运算符创建该类的对象运算符创建该类的对象 例如:例如:例如:例如:PeoplePeople如果一个如果一个如果一个如果一个抽象类抽象类抽象类抽象类,则如下是,则如下是,则如下是,则如下是错误错误错误错误的:的:的:的:People p=new P
6、eople();People p=new People();2 2)抽象类)抽象类)抽象类)抽象类必须要产生子类必须要产生子类必须要产生子类必须要产生子类,由,由,由,由子类创建对象子类创建对象子类创建对象子类创建对象,如果一个,如果一个,如果一个,如果一个类是类是类是类是abstractabstract类的子类,它必须具体实现父类的类的子类,它必须具体实现父类的类的子类,它必须具体实现父类的类的子类,它必须具体实现父类的abstractabstract方法。方法。方法。方法。3 3)abstractabstract类类类类可以有可以有可以有可以有abstractabstract方法方法方法方
7、法,也可以有非抽也可以有非抽也可以有非抽也可以有非抽象方法。象方法。象方法。象方法。抽象类(理解)抽象类(理解)一个一个abstract类不关心功能的具体行为,类不关心功能的具体行为,功能功能的具体行为由子类负责实现的具体行为由子类负责实现,抽象类中的抽象方法抽象类中的抽象方法可以强制子类必须给出这些方法的具体实现。可以强制子类必须给出这些方法的具体实现。例:abstract class 机动车机动车 abstract void 启动启动();abstract void 加速加速();abstract void 刹车刹车();抽象类(理解)抽象类(理解)class class 手动档轿车手动档
8、轿车手动档轿车手动档轿车 extends extends 机动车机动车机动车机动车 void void 启动启动启动启动()()System.out.printlnSystem.out.println(踏下离合器,换到一挡踏下离合器,换到一挡踏下离合器,换到一挡踏下离合器,换到一挡););System.out.printlnSystem.out.println(然后慢慢抬起离合器然后慢慢抬起离合器然后慢慢抬起离合器然后慢慢抬起离合器););void void 加速加速加速加速()()System.out.printlnSystem.out.println(踩油门踩油门踩油门踩油门););voi
9、d void 刹车刹车刹车刹车()()System.out.printlnSystem.out.println(踏下离合器,踏下刹车板踏下离合器,踏下刹车板踏下离合器,踏下刹车板踏下离合器,踏下刹车板););System.out.printlnSystem.out.println(然后将挡位换到一挡然后将挡位换到一挡然后将挡位换到一挡然后将挡位换到一挡););class class 自动档轿车自动档轿车自动档轿车自动档轿车 extends extends 机动车机动车机动车机动车 void void 启动启动启动启动()()System.out.printlnSystem.out.printl
10、n(使用前进挡使用前进挡使用前进挡使用前进挡););System.out.printlnSystem.out.println(然后轻踩油门然后轻踩油门然后轻踩油门然后轻踩油门););void void 加速加速加速加速()()System.out.printlnSystem.out.println(踩油门踩油门踩油门踩油门););void void 刹车刹车刹车刹车()()System.out.printlnSystem.out.println(踏下刹车板踏下刹车板踏下刹车板踏下刹车板););public class public class 测试类测试类测试类测试类 public stati
11、c void public static void main(Stringmain(String argsargs)手动档轿车手动档轿车手动档轿车手动档轿车 car1=new car1=new 手动档轿车手动档轿车手动档轿车手动档轿车();();自动档轿车自动档轿车自动档轿车自动档轿车 car2=new car2=new 自动档轿车自动档轿车自动档轿车自动档轿车();();car1.car1.启动启动启动启动();();car1.car1.加速加速加速加速();();car1.car1.刹车刹车刹车刹车();();car2.car2.启动启动启动启动();();car2.car2.加速加速加速
12、加速();();car2.car2.刹车刹车刹车刹车();();生活中的接口生活中的接口声卡声卡显卡显卡网卡网卡每种卡的内部结构都不相同,可以把声卡、网每种卡的内部结构都不相同,可以把声卡、网卡、显卡都插在卡、显卡都插在PCI插槽上,而不用担心哪个插槽上,而不用担心哪个插槽是专门插哪个卡的插槽是专门插哪个卡的主板主板 Java接口是一些接口是一些方法特征的集合方法特征的集合,但,但没有方法的实现。没有方法的实现。使用关键字使用关键字使用关键字使用关键字interfaceinterface来定义一个接口。接口的定义和类来定义一个接口。接口的定义和类来定义一个接口。接口的定义和类来定义一个接口。接
13、口的定义和类的定义很相似,的定义很相似,的定义很相似,的定义很相似,分为接口的声明和接口体。分为接口的声明和接口体。分为接口的声明和接口体。分为接口的声明和接口体。1.1.接口的声明接口的声明接口的声明接口的声明 :interface interface 接口的名字接口的名字接口的名字接口的名字 2.2.接口体:接口体:接口体:接口体:接口体中的方法只能进行声明,不许提供方法的实接口体中的方法只能进行声明,不许提供方法的实接口体中的方法只能进行声明,不许提供方法的实接口体中的方法只能进行声明,不许提供方法的实现,现,现,现,所以,方法的定义没有方法体,且用分号所以,方法的定义没有方法体,且用分
14、号所以,方法的定义没有方法体,且用分号所以,方法的定义没有方法体,且用分号“;”结尾结尾结尾结尾(抽象方法)(抽象方法)(抽象方法)(抽象方法)。如:。如:。如:。如:interfaceinterface People People void sleep();void sleep();void void run(intrun(int speed);speed);接口的声明(定义)接口的声明(定义)接口的使用(理解)接口的使用(理解)一个类通过使用一个类通过使用一个类通过使用一个类通过使用关键字关键字关键字关键字implementsimplements 声明自己声明自己声明自己声明自己实实实实现
15、一个或多个接口现一个或多个接口现一个或多个接口现一个或多个接口。如果使用多个接口,用逗号隔开接。如果使用多个接口,用逗号隔开接。如果使用多个接口,用逗号隔开接。如果使用多个接口,用逗号隔开接口名。如:口名。如:口名。如:口名。如:class class ManMan implementsimplements PeoplePeople 注:接口中的方法全部是注:接口中的方法全部是注:接口中的方法全部是注:接口中的方法全部是抽象方法抽象方法抽象方法抽象方法。而且这些方法。而且这些方法。而且这些方法。而且这些方法可以可以可以可以省略省略省略省略abstractabstract关键字。关键字。关键字。
16、关键字。(1 1)如果一个类使用了某个接口,那么)如果一个类使用了某个接口,那么)如果一个类使用了某个接口,那么)如果一个类使用了某个接口,那么这个类必这个类必这个类必这个类必须须须须实现实现实现实现 该接口的该接口的该接口的该接口的所有方法所有方法所有方法所有方法,即为这些方法提供方法体,即为这些方法提供方法体,即为这些方法提供方法体,即为这些方法提供方法体(2 2)特别要注意的是接口中的方法被默认是特别要注意的是接口中的方法被默认是特别要注意的是接口中的方法被默认是特别要注意的是接口中的方法被默认是public public 的,所以的,所以的,所以的,所以类在实现接口方法时一定要用类在实
17、现接口方法时一定要用类在实现接口方法时一定要用类在实现接口方法时一定要用public public 来修饰。来修饰。来修饰。来修饰。(3 3)如果接口的)如果接口的)如果接口的)如果接口的方法的返回类型如果不是方法的返回类型如果不是方法的返回类型如果不是方法的返回类型如果不是void void 的,那么在类中实现该接口方法时,方法体至少要有一的,那么在类中实现该接口方法时,方法体至少要有一的,那么在类中实现该接口方法时,方法体至少要有一的,那么在类中实现该接口方法时,方法体至少要有一个个个个return return 语句。语句。语句。语句。如果是如果是如果是如果是void void 型,类体
18、除了两个大括型,类体除了两个大括型,类体除了两个大括型,类体除了两个大括号外,也可以没有任何语句。号外,也可以没有任何语句。号外,也可以没有任何语句。号外,也可以没有任何语句。使用接口的注意事项:使用接口的注意事项:实例实例publicinterfacePCIpublicvoidstart();publicvoidstop();classSoundCardimplementsPCIpublicvoidstart()System.out.println(Dudu.);publicvoidstop()System.out.println(Soundstop!);Java接口中定义的方法在不同的地方
19、被实现,可以具有完全接口中定义的方法在不同的地方被实现,可以具有完全不同的行为不同的行为这是这是Java接口,相当于主接口,相当于主板上的板上的PCI插槽的规范插槽的规范classNetworkCardimplementsPCIpublicvoidstart()System.out.println(Send.);publicvoidstop()System.out.println(Networkstop!);声卡、网卡都实现了声卡、网卡都实现了PCI插槽的规范,但行为完全不同插槽的规范,但行为完全不同publicclassAssemblerpublicstaticvoidmain(Stringargs)PCInc=newNetworkCard();PCIsc=newSoundCard();nc.start();sc.start();可以使用可以使用Java接口标识类型接口标识类型运行时,根据实际创建的对象类型调用相应的方法实现运行时,根据实际创建的对象类型调用相应的方法实现Dudu.Send.控制台输出控制台输出实例实例