4.1类的继承
4.1.1 继承的概念
通过继承可以使多种事物之间形成一种关系体系,指在一个现有类的基础上构建一个新的类,新构建的称为子类,现有的称作父类,子类自动拥有父类所有可继承的属性和方法。
语句:
class 子类 extends 父类;
注意:类只支持单继承,不允许多重继承,只能有一个父类。一个类的父类可以再去继承另外的父类。
4.1.2 重写父类方法
在子类中重写的方法后,子类对象将无法访问父类重写方法。
格式:
super.成员变量;
super.成员方法([参数]);
使用super调用父类的构造方法:
super([参数]);
4.2 final关键字
用于修饰类、变量和方法,有“无法改变的“和”最终“Definitely含义。
特性:
final修饰的类不能被继承。
方法不能被子类重写
4.3.1 抽象类
不含方法体的方法为抽象方法。
语法:
abstract void 方法名();
抽象类是不可以被实例化的,不可以被调用,用来做父类。
Abstract不可用来修饰构造方法和属性,不可同时和private,static、final使用。
4.3.2 接口
如果一个抽象类中的所有方法都是抽象的,则可将这个类定义为接口
语法:
interface 接口名[];
通过implements可实现多个接口,用逗号隔开。
语法:
class 类名 implements [接口1,接口2];
一个接口可以通过extends继承多个接口,在继承另一个类时还可以实现接口,此时extends位于implements之前。
4.4 多态
4.4.1 多态概述
4.4.2 对象的类型转换
Instanceof,可判断一个对像是否为某个类(或接口)的实例或子类实例。
语法:
对象 instanceof 类(或接口);
4.4.3 object类
Object类的 to String()方法:
getclass().getName()+“@“+integer.toHexString (hashcode();
4.4.4 匿名的内部类
格式:
new 父类 (参数列表)或父接口(){
匿名类内部类实现部分
}
4.5.1什么是异常
异常时程序级别的,指运行时异常。
异常处理:即使在程序运行时发生错误,也能正常结束。
默认处理方式:先显示错误的信息,然后终止程序。
-
错误类(Error)虚拟机内部错误产生的异常。
-
标准异常类:除数为0或下标范围超出。
4.5.2 try…catch(异常捕获)和finally(资源释放)
语法
try{
程序代码块
}catch(Excrption type(Exception类及其子类)e){
//对Exception type的处理
}
4.5.3 throws关键字
格式:
修饰符 返回值类型 方法名(参数)throws Exception type 1 {
}
Thows后跟方法可能产生的异常,可与if配合使用
4.5.4 运行时异常与编译时异常(checked)
编译时异常:Exception类中除了Runtime Exception类及其子类都是编译时异常,特点:Java编译器会对其检查。
异常方法:使用try….catch语句对异常进行捕获。使用throws关键字声明抛出异常,调用者对其处理。
运行时异常:Runtime Exception类及其子类都是运行时异常,特点:运行时Java编译器不会对其检查,逻辑错误。
4.5.5自定义异常
自定义的异常类必须继承自Exception或其子类,在构造方法中使用super()语句调用Exception的构造方法。
Throw关键字用于在方法中声明抛出异常的实例对象。
语法:
throw Exception 异常对象;
4.6包
提供了类的多层命名空间
1.包实际上是一组类组合的集合,也称之为类库。
2.包的层次结构与文件目录结构是相似的,目的是Java的合法标识符,一般用小写字母单词表示。
3.jave语言提供了一些常用的基本类包,如Java.io和Java.lang
4.6.1 包的定义与使用
通过申明包的方式对Java类定义目录。
Java中的包是专门用来存放类的,通常功能相同的类存放在相同的包中,在声明包时,使用package语句。
要注意的是,包的声明只能位于Java源文件的第一行。(若缺省为无名包)
当编译一个声明了包的Java源文件,需要使用命令生成与包名对应的目录。
其中,-d用来指定生成的类文件的位置,表示在当前目录整行命令表示生成带包目录的,class文件并存放在当前目录下,当然,生成的类文件,还可以存放在其他目录下,只需要将用其他路径替换即可。
4.6.2 import语句
调用不在同一个包中的两个类
on.itcast.Student stu=new cn.itcast.student();
在实际开发中,定义的类都是含有包的。
为了简化代码,提供了import关键字,使用import可以在程序中一次导入某个指定包下的类。
Import 包名.类名;
需要注意的是、import通常出现在package语句之后,类定义之前。
-
java.lang:包含Java语言的核心类,如String、Math、System和Thread类等。
-
java.util:包含Java中大量工具类、集合类等,例如Arrays、List、set等。
-
java.net:包含Java网络编程相关的类和接口。
-
java.io:包含了Java输入、输出有关的类和接口。
-
Java.awt:包含了用于构建图形界面(GUI)的相关类和接口。
4.6.3 给Java应用打包
在JDK中提供了一个Jar命令,使用这个命令能够将这些类打包成一个文件。扩展名为:.Jar,它是一种压缩文件,独立与任何操作系统平台。
Java应用打包有很多好处。
-
安全
-
节省空间
-
可移植性
-c代表创建归档的文件
-v代表在标准输出中生成详细输出。
-f代表指定归档文件名。
4.7访问控制
针对类、成员方法和属性提供了四种访问级别。
分别是private(私有)default(缺省,默认)protected(受保护)和public(公共)
由大到小依次列出:
Private——default——protected——public
-
同一类(都能访问)
-
同一包(私有访问不到)
-
不同包(只能访问公有制)
1.Private(类访问级别):如果类的成员被Private访问控制符来修饰,则这个成员只能被该类的其他成员访问,其他类无法直接访问,类的良好封装就是通知Private关键字来实现的。
4. Default(包访问级别):如果一个类或者类的成员不使用任何访问控制符修饰,则称它为默认访问控制级别,这个类或者类的成员只能被本包中的其他类访问。
3. Protected(子类访问级别):如果一个类的成员被protected访问控制符修饰,那么这个成员既能被同一包下的其他类访问,也能被不同包下该类的子类访问。
4. Public(公共访问级别):这是一个最宽松的访问控制级别,如果一个类或者类的成员别public访问控制符修饰,那么这个类或者类的成员能被所有的类访问,不管访问类与被访问类是否在同一包中。