特点:
- 不能new这个对象,只能靠子类去实现它;
2.抽象类中可以写普通方法;
3.抽象方法必须在抽象类中;
普通类:只有具体实现,
抽象类:具体实现和规范(抽象方法)都有!
接口:只有规范!自己无法写方法
接口就是规范,定义的是一组规则,体现了现实世界中“如果你…则必须能…的思想。
内部类就是在一个类的内部再定义一个类,比如,A类中定义一个B类,那么B类相对于A类来说就称为内部类,而A类相对于B类来说就是外部类。
静态内部类:用static修饰的类
局部内部类:在方法中定义的类;
匿名内部类:之前的所有类都有自己的名字,但是有时候如果某个接口的实现类(或者某个父类的子类)只需要使用一次,此时这样的类如果我们单独定义出来则需要单独为其创建一个“*.java”文件。那么感觉浪费,为了避免这样的浪费可以将这个只使用一次的类定义成匿名内部类直接在需要的地方使用。
如果要使用匿名内部类必须在抽象类或者接口的基础上实现。匿名内部类一般可以作为方法的参数传递,也可以在方法中直接定义。
什么是异常:
异常:程序在运行过程中产生的不正常情况。程序在运行的时候,发生了一些不被预期的事件,从而没有按照我们编写的代码执行,这就是异常。
异常时Java中的错误,但是并不是所有的错误都是异常。
例如:
在定义变量名的时候没有依照Java的规则,在语句的结尾少了一个分号,那么运行出来的结果是提示是错误java.lang.Error。
不过如果用System.out.println(5/0),那这个时候程序是可以正常编译的,但是在运行的时候,应为用0做了除数,会抛出java.lang.ArithmeticException的异常。
异常的原因有很多,此处不一一介绍。
编写代码时,IDE提示我们要处理的异常,如果不处理,程序是不能被编译的。
运行时异常运行时异常程序员可以不去处理,当异常出现的时候,虚拟机会处理。常见的运行时异常有空指针异常。
错误错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。
例如:当栈溢出时,一个错误就发生了,它们在编译也检查不到的。
所有的异常类都是从java.lang.Exception类继承的子类。
Java通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。
六、捕获异常有一部分异常是需要程序眼提前处理的,这种异常统一称为检测性异常,如果不处理,程序是不能编译通过的。
java中提供了一个捕获异常的机制:try-catch
当我们自己不想处理异常时,可以用throws关键字抛出异常。
抛出异常,就像平常所说的”甩锅”,总有一个人要背锅,在Java中也一样,异常最终总是要被处理或者捕获的。
throw关键字
throw关键字的作用是:主动抛出异常;
throw是语句抛出一个异常,一般是在代码块的内部,当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常。
注意:
使用throw关键字主动抛出检测性异常的时候,在方法名上必须使用throws表明调用这个方法可能存在要抛出的异常。
前面谈到的都是系统自带的异常,但是如果我们是在开发一个复杂项目,就经常会遇到系统自带的异常不能满足我们的需求的情况,所以这个时候就需要我们自己来定义异常了。
步骤:
- 继承Exception类
- 将信息传递给父类,因为Exception已经实现了很多异常处理的方法了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)