一、抽象类:
访问修饰符abstractclass类名{
}
抽象类和普通类的区别:
1、抽象类不能被实例化
2、抽象类一般含有抽象方法
抽象方法:在抽象类中只有方法签名(方法声明),没有方法实现,具体实现在继承了该抽象类的子类中实现
3、抽象类可以没有抽象方法,但是一旦某个类有了一个抽象方法,那么该类一定是一个抽象类
4、抽象类的特殊形式:没有抽象方法的类和所有方法都是抽象方法的类
5、子类一旦继承抽象类,一定要实现该抽象类的抽象方法
抽象类的特殊形式:
1、抽象类中所有的方法都是普通方法:
用于:父类本身不适合直接创建对象的情况
2、抽象类中所有的方法都是抽象方法:(接口)
用于:定义规范或者标准
如果抽象类中都是抽象方法,这种特殊形式实际上就是接口
二、接口中所有的方法默认都是publicabstractXXXX类型,所以抽象类中如果所有的方法都是抽象方法实际上该抽象类就是接口形式了。
接口中所有的变量都是常量,在接口中声明变量默认修饰符是publicstaticfinalIntnum=10;
接口不能直接new,应该创建接口实现类的实例
三、Final关键字
可以修饰类、属性、方法
修饰类表示该类不能被继承
修饰属性表示该属性一旦被赋值在运行过程中不能再被修改。
修饰方法:表示该方法不能被子类重写
四、内部类
把一个类定义在另一个类的内部就称为内部类
内部类可以访问外部类的所有成员,包括使用private关键字修饰的成员
如果要创建内部类的对象,必须先创建外部类的对象,因为内部类是外部类的一个成员
如果内部类中有和外部类重名的成员,在内部类中访问外部类的重名成员,使用外部类类名.this.成员名
五、异常
异常由两部分组成:
检查性异常,如果不处理,会导致编译不通过
非检查性异常,可以处理也可以不处理,,又称为运行时异常
异常的处理:
1、直接处理异常
使用关键字try-catch-finally结构
Try{
}
Catch(Exceptione){
}
Finally{
}
如果
如果
Try{
//可能会出现异常的代码
}
Catch(XXExceptionex1){
}
Catch(XXExceptionex2){
}
Catch(……){
}
Finally{
}
如果捕捉多个异常,会先处理首先匹配到的异常,比如,
2、抛出异常
Throws关键字声明异常,在定义方法是通过throws关键明确声明该方法需要抛出的异常
PublicXXXX()throwsXXException
Throw关键字创建异常对象thrownewXXException(){
}
Throws和throw关键字的区别:
相同点:都用来处理异常
Throws是声明要抛出的异常类型
Throw是抛出一个创建的异常对象
Throws位于方法声明部分
Throw位于方法体中
Throws后面可以抛出多个异常类型
Throw只能是一个
检查性异常在父子类之间要符合以下条件:子类如果重写了父类中抛出异常的方法,子类抛出的异常不能比父类更多,或者不能比父类更宽泛的异常
以上说法不适用于RuntimeException异常类型
3、自定义异常
PublicclassXXExceptionextendsException{
}
自定义异常都需要继承自Exception类
德高培身,财多伤身。