面对对象---接口
一、重点知识
1.abstract可以和static一起修饰内部类
2.try里面的语句,如果出现异常,那么在异常后的语句就不执行了,但是try catch 外面的语句正常执行,try包裹的语句视为没有执行
3."throws + 异常类型"写在方法的声明处。指明此方法执行时,可能会抛出的异常类型。
4.一旦当方法体执行时,出现异常,仍会在异常代码处生成一个异常类的对象,此对象满足throws后异常类型时,就会被抛出。异常代码后续的代码,就不再执行!
5.注意代码块使用的作用域
6.finally必须直接接在catch语句的后面,中间不能加其他代码不然会报错
7.非静态代码块执行优先于构造器,用来初始化属性,也可以包含输出语句
8.静态注意throws抛出异常放在方法声明最后面,小括号的后面,花括号的前面代码块先于main函数执行
9.内部类的字节码文件名带一个$符
10.throws抛出的异常只有编译时异常一定要被处理,运行时异常抛出后,不用try-catch去再次处理,也能执行。一般我们都不处理运行时异常
11.接口的抽象方法可以定义参数,记得参数是局部变量,不是属性,记住参数(局部变量)的定义,是等待实参传值的,本质上也是先赋值,再使用
12.final 和static在使用时没有先后顺序要求
13.注意接口创建对象使用时用多态,可以极大降低程序的耦合性,注意多态在接口中的体现。面对接口编程
14.子类构造器重载,形参名可以与父类的不一样,但是任然调用的是父类对应的构造器
public class MyException extends RuntimeException{
static final long serialVersionUID = -7034897193246939L;
public MyException(){
}
public MyException(String msg){
super(msg);
}
}
15.接口是允许多继承的,一个接口可以继承多个接口因为抽象方法没有具体的方法体,方法是安全的,如果类允许多继承,方法是不安全的
16.如果实现类没有实现接口的所有抽象方法,那么这个实现类得是抽象得
17.记得异常后面的代码是不执行的
18.默认方法只能在接口中被定义,但是可以在其实现类中被重写,重写不用加default.
二、重点问题
类什么时候被加载到内存当中
当主函数中调用类的静态结构
或者创建类的对象
或者创建子类的对象
主动加载calss.forName("包名.类名")
关于class.forName的解析
https://www.cnblogs.com/ljbguanli/p/7107058.html
只要和这个类沾边了,这个类就会被加载
三、课堂知识
1接口
1.2 接口的概念
从语法的角度:接口是一种特殊的抽象类。这种抽象类只包含了抽象方法和静态常量,没有方法的实现。也就是说:接口中都是抽象方法和静态常量的集合。
从功能的角度:接口表示一种约定,或者能力。
1.3 Java中的接口的语法格式
//定义一个接口,语法
interface 接口名{
//1.静态常量
//2.抽象方法
}
实现类,实现一个接口的语法:
class 实现类 implements 接口名{
}
1.4 接口的特点
1.接口不能创建对象,不能被实例化。而且接口中没有构造方法。
2.接口中的方法,一般都是公共的抽象方法:public abstract来修饰
3.接口中的属性,都是公共的静态常量:public static final来修饰
4.在一个接口中,声明方法的时候,如果没有声明访问权限,默认也是public的。如果没有其他的修饰符默认也是abstract。声明属性,如果没有声明访问权限和其他的关键字,默认也是public static final。
publicinterface接口名{
publicstaticfinal数据类型常量名="初始值";
publicabstractvoidtest();
}
1.5 接口的好处
1.降低代码之间的耦合性:(藕断丝连),类和类之间,耦合性越低越好。
2.定义的都是规则,对外保持接口的一致。
3.接口可以多继承
1.6 接口的注意点
1、接口可以多继承
一个接口允许继承另外一个接口,而且允许继承多个接口。只不过该接口的实现类,要实现该接口中,以及从父接口中继承来的抽象方法,都需要实现。
接口中:声明都是抽象方法。只有声明(描述功能),没有具体的实现(完成这个功能)。声明和实现分离。
2、一个类还可以实现多个接口
一个实现类,可以同时实现多个接口。
3、一个实现类如果没有实现接口中的所有的方法,那么该类是抽象的。等待子类继承,并实现其他的抽象方法。
4、一个类也可以继承父类,同时实现接口。
5、jdk1.8的新特性:static方法 、default方法。