接口与实现
接口(接口声明和接口体)
使用关键字interface来定义
接口声明:interface 接口的名字
接口体:
1. 可以没有任何内容(变量和方法)
2. 可以有变量,但是这些变量必须是**常量**,默认被public static final 修饰,即接口里不可以有私有成员。
3. 可以有方法,但是这些方法都是抽象方法,默认被public abstract 修饰
4. 接口中只有常量(没有变量)和抽象方法(没有普通方法)
5. 常量都是静态常量(static)
6. 接口不能被实例化的
7. 抽象方法只有声明,不允许有方法体
8. 接口没有构造函数,方法可以抛出异常
9. 可以定义一个接口引用,但是必须执行其实现接口的子类对象
10. 接口可以继承其他的接口(这里指单继承),通过extends来实现
11. 接口可以实现类的多继承,通过implements来实现。
12. 接口可以有类实现,但是这个普通类必须实现该接口的所有方法。如果这个类不实现该接口的所有方法,它必须是抽象类。
13. 一个java源文件由类和接口组成
> 接口的访问权限修饰符
1.public修饰的接口可以被任何一个类实现
2.如果一个接口不加任何修饰,就称作友好接口,友好接口可以被与该接口在同一包中的类实现
> 接口回调
ImpleCom是实现接口的类
ImpleCom object = new ImpleCom();
使用接口回调之后,object不仅可以调用ImpleCom中的方法,还可以调用接口中的方法但是当接口变量 com = object;com就可以调动被类实现的接口方法,这个过程才叫接口回调。
> 理解接口
接口变量中只能存放实现该接口的雷达的实例的引用。
内部类与异常类
> 断言
断言语句的语法格式:
assert booleanExpression;
assert booleanExpression:messageException;
启用与关闭断言语句
java -ea mainClass
JDK8新特性(默认方法和静态方法)
在jdk8之前,interface之中可以定义变量和方法,变量必须是public、static、final的,方法必须是public、abstract的。由于这些修饰符都是默认的,所以在JDK8之前,下面的写法都是等价的。
JDK8及以后,允许我们在接口中定义static方法和default方法。
再定义一个接口的实现类:
- 静态方法,只能通过接口名调用,不可以通过实现类的类名或者实现类的对象调用。
- default方法,只能通过接口实现类的对象来调用。
内部类
Java类有两种重要的成员:成员变量和方法,实际上java还允许有一种成员:内部类
## **内部类:**
1.内部类的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外部类中的方法。
2.内部类的类体中不可以声明成员变量和方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。
## **匿名类 **
> 和子类有关的匿名类
匿名类可以继承父类的方法也可以重写父类的方法
使用匿名类时,必然是在某个类中直接用匿名类创建对象,因此匿名类一定是内部类。
匿名类可以访问外嵌类中的成员变量和方法,匿名类的类体中不可以声明static成员变 量和static成员方法。
由于匿名类是一个子类,但没有类名,所以在匿名类创建对象时,要直接使用父类的构 造方法。
Bank是一个类
new Bank() {
匿名类的类体
};
> 和接口有关的匿名类
Computable是一个接口
new Computable() {
实现接口的匿名类的类体
};
异常类
异常对象可以调用如下方法得到或输出有关异常的信息
public String getMessage();
public void printStackTrace();
public String toString();
Try-catch语句
知识积累
程序执行退出代码:System.exit(0);
Throw 和 Throws两个关键字
一个方法在生命时可以使用throws关键字声明要产生的若干个异常,并在该方法的方法体中具体给出产生异常的操作,即用相应的异常类创建对象。
使用throw关键字抛出该异常对象。
程序必须在try-catch块语句中调用可能发生异常的方法,其中catch的作用就是捕获throw关键字抛出的异常对象。
转载:https://blog.csdn.net/qq_44102678/article/details/101780874
查看评论