抽象
抽象的概述
定义
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有一个足够的信息来描绘一个具体的对象,这样的类就是抽象类
特点
- 抽象类除了不能实例化对象之外,类的其他功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
- 子类是非抽象类,必须要重写父类中的抽象方法,然后去使用子类的自己功能。
- 父类是抽象类,如果要创建对象必须通过子类进行实现。
- 父类进行实例化只能间接子类进行实例化。
抽象类中的成员特点
1.成员变量:可以是变量,也可以是常量。
2.构造方法:一个抽象类中是可以有构造方法的。
3.成员方法:可以是抽象方法,也可以是非抽象方法。抽象类的抽象方法是强制子类实现的。
注意
abstract不能和以下的关键字共用。关键字:private、final、static。
- private:冲突(可以使用protected/public)
- final:冲突
- static:无意义
附
抽象类与一般类的区别在于抽象方法。
抽象类与接口的区别在于它可以包含成员。
受保护
修饰符 | 本类 | 同一个包的类 | 继承类 | 其他类 |
---|---|---|---|---|
public | √ | × | × | × |
无 | √ | √ | × | × |
protected | √ | √ | √ | × |
public | √ | √ | √ | √ |
关于 protected
在很多书中都对protected介绍比较简单,基本都是一句话:“被protected修饰的成员对于本包和其子类可见。”
实际上protected的可见性在于两点:
- 父类的protected成员是包内可见的,并且对子类可见。
- 若子类与父类不再同一包中,那么在子类中,子类的实例可以访问其父类继承而来的protected方法,而不能访问父类实例的protected的方法。
在遇到涉及protected成员的调用时,首先要确定出该protected成员来自什么地方,其可见性范围是什么,然后就可以判断出当前用法是否可行。
在实际应用中,受保护的方法根据有实际意义,如果需要限制某个方法的使用,就可以将它声明为protected,这表明子类得到信任,可以正确的使用这个方法,其它子类则不行。
try catch finally
回顾
异常以及异常的运行情况
在Java中异常的继承主要有两个: Error和Exception 这两个,而Error就是jvm出现错误,以及系统奔溃等现象这些错误没办法通过程序来处理,所以在程序中不能使用catch来捕捉处理这类的异常。
异常处理过程
把会出项异常的程序段放在try中,当抛出异常的时候就会系统会生成一个异常对象,然后进行查找捕获这个异常然后进行处理这个异常,处理之后接着执行下面的程序。
出现异常之后如果没有进行捕获处理系统就会直接将这个异常栈的跟踪信息直接打印出来之后就结束这个程序的执行。
实例参考
总结
使用
-
try、catch、finally语句中,在如果try语句有return语句,则返回的之后当前try中变量此时对应的值,此后对变量做任何的修改,都不影响try中return的返回值
-
如果finally块中有return 语句,则返回try或catch中的返回语句忽略。
-
如果finally块中抛出异常,则整个try、catch、finally块中抛出异常
注意
- 尽量在try或者catch中使用return语句。通过finally块中达到对try或者catch返回值修改是不可行的。
- finally块中避免使用return语句,因为finally块中如果使用return语句,会显示的消化掉try、catch块中的异常信息,屏蔽了错误的发生
- finally块中避免再次抛出异常,否则整个包含try语句块的方法回抛出异常,并且会消化掉try、catch块中的异常
网友评论