版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、智 能 家 居 系 统Smart Home System团队:夏继媛 晏 凯 唐建东 吴丽春 张立涓 许亚兰 张秀君 面向对象程序设计(二)l类的继承lfinal关键字l抽象类和接口l包l异常l访问控制一、 类的继承o 1.1 继承的概念继承的概念n程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。n在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。在程序中,如果想声明一个类继承另一个类,需要使用extends关键字,接下来通过一个案例来学习子类是如何继承父类的
2、。o 1.1 继承的概念继承的概念n程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。n在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。在程序中,如果想声明一个类继承另一个类,需要使用extends关键字,接下来通过一个案例来学习子类是如何继承父类的。一、 类的继承一、 类的继承o 1.1 继承的概念继承的概念n在类的继承中,需要注意一些问题,具体如下:n1、在Java中,类只支持单继承,不允许多重继承,也就是说一个类只能有一个直接父类,例如下面这种情况是不合
3、法的。n2、多个类可以继承一个父类,例如下面这种情况是允许的。一、 类的继承o 1.1 继承的概念继承的概念n在类的继承中,需要注意一些问题,具体如下:n3、在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类,例如C类继承自B类,而B类又可以去继承A类,这时,C类也可称作A类的子类。下面这种情况是允许的。一、 类的继承一、 类的继承o 1.2重写父类方法重写父类方法n在继承关系中,子类会自动继承父类中定义的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类的方法进行重写。需要注意的是,在子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表以及返回值类型。一
4、、类的继承o 1.2重写父类方法重写父类方法n从上例的运行结果可以看出,当子类重写父类的方法后,子类对象将无法访问父类被重写的方法,为了解决这个问题,在Java中专门提供了一个super关键字用于访问父类的成员。例如访问父类的成员变量、成员方法和构造方法。接下来分两种情况来学习一下super关键字的具体用法。n1、使用super关键字调用父类的成员变量和成员方法。具体格式如下:一、类的继承o 1.2重写父类方法重写父类方法n2、使用super关键字调用父类的构造方法。具体格式如下:一、类的继承o 1.2重写父类方法重写父类方法n上例中在实例化Dog对象时一定会调用Dog类的构造方法。从运行结果
5、可以看出,Dog类的构造方法被调用时父类的构造方法也被调用了。需要注意的是,通过super调用父类构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次。n将上例第11行代码去掉,再次编译程序会报错:一、类的继承o 1.2重写父类方法重写父类方法n出错的原因是,在子类的构造方法中一定会调用父类的某个构造方法。这时可以在子类的构造方法中通过super指定调用父类的哪个构造方法,如果没有指定,在实例化子类对象时,会自动调用父类无参的构造方法。n为了解决上述程序的编译错误,可以在子类中显示地调用父类中已有的构造方法,当然也可以选择在父类中定义无参的构造方法,现将上例中的Animal类进行修改,
6、如图所示。一、类的继承二、final关键字o final关键字可用于修饰类、变量和方法,它有“这是无法改变的”或者“最终”的含义,因此被final修饰的类、变量和方法将具有以下特性:n1、final修饰的类不能被继承。n2、final修饰的方法不能被子类重写。n3、final修饰的变量(成员变量和局部变量)是常量,只能赋值一次。o 2.1 final关键字修饰类关键字修饰类nJava中的类被final关键字修饰后,该类将不可以被继承,也就是不能够派生子类。接下来通过一个案例来验证。二、final关键字o 2.2 final关键字修饰方法关键字修饰方法n当一个类的方法被final关键字修饰后,这
7、个类的子类将不能重写该方法。二、final关键字这是因为Animal类的shout()方法被final所修饰。由此可见,被final关键字修饰的方法为最终方法,子类不能对该方法进行重写。正是由于final的这种特性,当在父类中的定义某个方法时,如果不希望被子类重写,就可以使用final关键字修饰该方法。二、final关键字这是因为使用final关键字修饰成员变量时,虚拟机不会对其进行初始化。因此使用final修饰成员变量时,需要在定义变量的同时赋予一个初始值,下面将第2行代码修改为:final String name = 李芳; / 为final关键字修饰的name属性赋值三、抽象类和接口o
8、3. 1 抽象类抽象类n当定义一个类时,常常需要定义一些方法来描述该类的行为特征,但有时这些方法的实现方式是无法确定的。n针对上面描述的情况,Java允许在定义方法时不写方法体,不包含方法体的方法为抽象方法,抽象方法必须使用abstract关键字来修饰,具体示例如下:o 3.1 抽象类抽象类n当一个类中包含了抽象方法,该类必须使用abstract关键字来修饰,使用abstract关键字修饰的类为抽象类,具体示例如下:三、抽象类和接口o 3. 1 抽象类抽象类n在定义抽象类时需要注意,包含抽象方法的类必须声明为抽象类,但抽象类可以不包含任何抽象方法,只需使用abstract关键字来修饰即可。另外
9、,抽象类是不可以被实例化的,因为抽象类中有可能包含抽象方法,抽象方法是没有方法体的,不可以被调用。如果想调用抽象类中定义的方法,则需要创建一个子类,在子类中将抽象类中的抽象方法进行实现。三、抽象类和接口o 3.2 接口接口n如果一个抽象类中的所有方法都是抽象的,则可以将这个类用另外一种方式来定义,即接口。在定义接口时,需要使用interface关键字来声明,具体示例如下:n从示例中会发现抽象方法breathe()并没有使用abstract关键字来修饰,这是因为接口中定义的方法和变量都包含一些默认修饰符。接口中定义的方法默认使用“public abstract”来修饰,即抽象方法。接口中的变量默
10、认使用“public static final”来修饰,即全局常量。三、抽象类和接口o 3. 2 接口接口n由于接口中的方法都是抽象方法,因此不能通过实例化对象的方式来调用接口中的方法。此时需要定义一个类,并使用implements关键字实现接口中所有的方法。三、抽象类和接口四、异常o 4.1 什么是异常什么是异常n在程序运行的过程中,也会发生这种非正常状况,比如程序运行时磁盘空间不足,网络连接中断,被装载的类不存在。针对这种情况,在Java语言中,引入了异常,以异常类的形式对这些非正常情况进行封装,通过异常处理机制对程序运行时发生的各种问题进行处理。接下来通过一个案例来认识一下什么是异常:程
11、序发生了算数异常(ArithmeticException),这个异常是由于程序中的第3行代码调用divide()方法时传入了参数0,在方法中的第8行代码的运算中出现了被0除的错误。在这个异常发生后,程序会立即结束,无法继续向下执行。o 4.1 什么是异常什么是异常n在上例中产生了一个ArithmeticException异常,ArithmeticException异常只是Java异常类中的一种,在Java中还提供了大量的异常类,这些类都继承自java.lang.Throwable类。接下来通过一张图来展示Throwable类的继承体系。四、异常o 4.1 什么是异常什么是异常nThrowabl
12、e有两个直接子类Error和Exception,其中Error代表程序中产生的错误,Exception代表程序中产生的异常。oError类称为错误类,它表示Java运行时产生的系统内部错误或资源耗尽的错误,是比较严重的,仅靠修改程序本身是不能恢复执行的。举一个生活中的例子,在盖楼的过程中因偷工减料,导致大楼坍塌,这就相当于一个Error。使用java命令去运行一个不存在的类就会出现Error错误。四、异常o 4.1 什么是异常什么是异常nThrowable有两个直接子类Error和Exception,其中Error代表程序中产生的错误,Exception代表程序中产生的异常。oExceptio
13、n类称为异常类,它表示程序本身可以处理的错误,在开发Java程序中进行的异常处理,都是针对Excption类及其子类。在Exception类的众多子类中有一个特殊的RuntimeException类,该类及其子类用于表示运行时异常,除了此类,Exception类下所有其它的子类都用于表示编译时异常。四、异常o 4.1 什么是异常什么是异常nThrowable类中的常用方法四、异常o 4.2 trycatchn上例由于发生了异常,程序立即终止,无法继续向下执行。为了解决这样的问题,Java中提供了一种对异常进行处理的方式异常捕获。异常捕获通常使用trycatch语句,具体语法格式如下:其中在tr
14、y代码块中编写可能发生异常的Java语句,catch代码块中编写针对异常进行处理的代码。当try代码块中的程序发生了异常,系统会将这个异常的信息封装成一个异常对象,并将这个对象传递给catch代码块。catch代码块需要一个形参指明它所能够接收的异常类型,这个参数的类型必须是Exception类或其子类。四、异常o 4.2 trycatchn接下来使用try.catch语句对上例中出现的异常进行捕获。四、异常五、包(package)o 5.1 包的定义与使用包的定义与使用n为了便于对硬盘上的文件进行管理,通常都会将文件分目录进行存放。同理,在程序开发中,也需要将编写的类分目录存放便于管理,为此
15、,Java引入了包(package)机制,程序可以通过声明包的方式对Java类定义目录。nJava中的包是专门用来存放类的,通常功能相同的类存放在相同的包中。在声明包时,使用package语句,具体示例如下:n需要注意的是,包的声明只能位于Java源文件的第一行。o 5.1 包的定义与使用包的定义与使用n接下来以HelloWorld为例,讲解如何使用包机制管理Java类文件。五、包(package)o 5.1 包的定义与使用包的定义与使用n在当前目录下查看包名“cn.itcast”对应的“cnitcast”目录,发现该目录下存放了HelloWorld.class文件。五、包(package)o
16、 5.2 import语句语句n在程序开发中,位于不同包中的类经常需要互相调用。例如,目录“D:packageTest” 下有两个源文件,分别是Student.java和Test.java。五、包(package)o 5.2 import语句语句nJava中提供了import关键字,使用import可以在程序中一次导入某个指定包下的类,具体格式如下所示:n需要注意的是,import通常出现在package语句之后,类定义之前。修改后的Test类如图所示。五、包(package)o 5.2 import语句语句n在JDK中,不同功能的类都放在不同的包中,其中Java的核心类主要放在java这个包
17、以及其子包下,Java扩展的大部分类都放在javax包以及其子包下。为了便于后面的学习,接下来简单介绍Java语言中的常用包。ojava.lang:包含Java语言的核心类,如String、Math、System和Thread类等,使用这个包中的类无须使用import语句导入,系统会自动导入这个包下的所有类。ojava.util:包含Java中大量工具类、集合类等,例如Arrays、List、Set等。:包含Java网络编程相关的类和接口。ojava.io:包含了Java输入、输出有关的类和接口。ojava.awt:包含用于构建图形界面(GUI)的相关类和接口。五、包(package)o 在Java中,针对类、成员方法和属性提供了四种访问级别,分别是private、default、protected和public。接下来通过一个图将这四种控制级别由小到大依次列出:六、访问控制nprivate(类访问级别) :如果类的成员被private访问控制符来修饰,则这个成员只能被该类的其它成员访问,其它类无法直接访问。实现类的良好封装。ndefault(包访问级别) :如果一个类或者类的成员不使用任何访问控制符修饰,则称它为默认访问控制级别,这个类或者类的成员只能被本包中的其它类访问。nprotected(子类访问级别) :如果一个类的成员被protected访问控制符修饰,那么这个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026-2030中国家居建材流通市场深度调研与竞争策略研究报告
- 一线员工技能等级评定方案
- 小学语文拼音测试题库及评价方案
- 有限合伙份额代持协议
- 机关单位员工职业健康管理
- 主体验收自评报告
- 劳动法在企业日常管理中的应用
- 一矿幼儿园种植园实施方案
- 职业司机安全驾驶行为规范
- 邗江区农村电商发展中地方政府角色与策略探析
- 桑葚果酒的创业计划书
- 临床实习的基本要求和指导
- 茶文化与茶艺(高职)全套教学课件
- 医院培训课件:《环境卫生学监测》
- 京东平台店铺运营从入门到精通
- 西药学的毕业论文
- 幼儿园公开课《我不挑食》PPT
- Quantum软件培训手册
- 不锈钢浮盘安装方案
- TD-T 1048-2016 耕作层土壤剥离利用技术规范
- 全国三维数字化创新设计大赛全国总决赛一等奖
评论
0/150
提交评论