当前位置:网站首页>7.23
7.23
2022-07-25 20:37:00 【剑轩~】
interface
接口和类是并列的两个结构
如何定义接口:
JDK7以前:只能定义全局常量和抽象方法
全局常量:public static final,可以省略,会默认加上
抽象方法:public abstract
JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法
接口中定义的静态方法,只能通过接口来调用。
通过实现类的对象,可以调用接口中的默认方法,默认方法,子类拿来可以直接调。
如果子类(或实现类)继承的父类和实现的接口中声明了同名同参数的方法,那么子类在没有重写此方法的情况下,默认调用的是父类中的同名同参数的方法 。 --> 类优先原则
如果实现类实现了多个接口,而这多个接口中定义了同名同参数的默认方法,那么在实现类没有重写此方法的情况下,报错。 --> 接口冲突
接口通过类去实现(implements)的方式来使用。
如果实现类覆盖了接口中的所有抽象方法,则此实现类就可以实例化
如果实现类没有覆盖接口中所有的抽象方法,则此实现类仍为一个抽象类,如果实现类重写了接口中的默认方法,调用时,仍然调用的是重写以后的方法
JAVA 可以实现多接口
内部类
分类:成员内部类(静态、非静态) vs 局部内部类(方法内、代码块内、构造器内)
成员内部类:
可以被final修饰,表明此类不能被继承
可以被absract修饰
可以被四种不同修饰符修饰
局部内部类的使用:
在局部内的方法中(比如 show),如果调用局部内部类所声明的方法(比如 : method ) 中的局部变量的话,要求此局部变量声明为final的。
class test{
// 创建一个实现了Comparable 接口的类的对象 : 局部内部类
// 方式一:
public Comparable getComparable() {
class MyComparable implements Comparable{
@Override
public int compareTo(Object o) return 0 ;
}
// return new MyComparable() ;
//方式二 :
return new Comparable() {
@Override
public int compareTo(Object o) return 0;
}
}
//
public void method() {
//局部变量
int num = 10 ;
class AA{
public void show() {
// num = 20 ;
System.out.println(num);
}
}
}
}面试题:
抽象类和接口的异同?
相同点:不能实例化;都可以包括抽象方法;
不同点:
把抽象类和接口(Java 7 ,java8 ,java9)的定义、内部结构解释说明
类: 单继承 接口:多继承; 类与接口: 多实现
异常处理
体系结构:
总父类:Trowable
java.lang.error :一般不编写针对性的代码进行处理。
java.lang.Exception :可以进行异常的处理
编译时异常(check)
运行时异常(uncheck) --- RuntimeException
try-catch-finally
tru {
}catch(异常类型1 变量名1) {
}catch(异常类型2 变量名2){
}finally {
// 一定会执行的部分
} catch 中的异常类型,如果没有子父类关系,则无顺序要求
如果有子类关系,则要求子类一定要父类上面
常用的两种处理方法:
getMessage () ; // String
printStackTrace () : // void
在try中声明的变量,出了try就用不了了
finally 中声明的是一定会被执行的代码。即使catch中又出现异常了。 try中有return语句的情况,catch中有return语句的情况。
像数据库连接、输入输出流、socket连接,JVM是不能自动回收的。我们需要手动的进行资源的回收,此时的资源释放,就需要放在finally中
使用try-catch 处理编译时异常,是得程序在编译时就不报错,但是运行时仍可报错。相当于我们使用try-catch 将一个编译时可能出现的异常,延迟到运行时出现。
throws + 异常类型
一旦当方法体执行时,出现异常,仍会在异常代码处生成一个异常类的对象,此对象满足throws后异常类型时,就会被抛出。异常代码后续的代码,就不再执行。
try-catch : 真正的将异常处理掉了
throws: 只是将异常抛给了方法的调用者。并没有真正地将异常处理掉。
开发中如何选择:
如果父类中被重写的方法没有throws方法处理异常,则子类重写的方法也不能使用throws,意味着如果子类 重写的方法中有异常,必须使用try-catch
执行的方法中,先后又调用了另外的几个方法,这几个方法是递进关系进行的。我们建议这几个方法使用throws的方式进行处理。而执行的方法a可以考虑try-catch的方式进行处理。
关于异常对象的产生:
系统自动生成的异常对象
手动的生成一个异常对象,并抛出“throw”
只有异常体系的对象才可以 throew new 异常类类名 () ;
throw 和 thorws 的区别 :
throw是抛,throws 是抓
throw 表示抛出一个异常类的对象,生成异常对象的过程。声明在方法体内
throws 属于异常处理的一种方式,声明在方法的声明处
边栏推荐
- Open source SPL enhances mangodb computing
- Vivo official website app full model UI adaptation scheme
- 【高等数学】【8】微分方程
- Fanoutexchange switch code tutorial
- Array of sword finger offer question bank summary (I) (C language version)
- leetcode-155:最小栈
- "Chain" connects infinite possibilities: digital asset chain, wonderful coming soon!
- leetcode-6127:优质数对的数目
- tga文件格式(波形声音文件格式)
- [advanced drawing of single cell] 07. Display of KEGG enrichment results
猜你喜欢

Google guava is just a brother. What is the real king of caching? (glory Collection Edition)

Difference Between Accuracy and Precision

毕业从事弱电3个月,我为什么会选择转行网络工程师
![[today in history] July 1: the father of time-sharing system was born; Alipay launched barcode payment; The first TV advertisement in the world](/img/41/76687ea13e1722654b235f2cfa66ce.png)
[today in history] July 1: the father of time-sharing system was born; Alipay launched barcode payment; The first TV advertisement in the world

【高等数学】【5】定积分及应用

Socket error Event: 32 Error: 10053. Connection closing...Socket close

leetcode-6127:优质数对的数目

【高等数学】【6】多元函数微分学
![[today in history] July 8: PostgreSQL release; SUSE acquires the largest service provider of k8s; Activision Blizzard merger](/img/14/f2b68dbe4e6a9b8d89ed9ff38f5e11.png)
[today in history] July 8: PostgreSQL release; SUSE acquires the largest service provider of k8s; Activision Blizzard merger

During the interview, I was asked how to remove the weight of MySQL, and who else wouldn't?
随机推荐
Docker builds redis cluster
Vulnhub | dc: 6 | [actual combat]
[cloud native] use of Nacos taskmanager task management
DIY personal server (DIY storage server)
Clickhouse notes 02 -- installation test clickvisual
What is cluster analysis? Categories of cluster analysis methods [easy to understand]
【高等数学】【6】多元函数微分学
Dataframe first performs grouping operation and then combines output
[onnx] export pytorch model to onnx format: support multi parameter and dynamic input
Vivo official website app full model UI adaptation scheme
Network protocol: TCP part2
Follow up of Arlo's thinking
JMeter - interface test
[today in history] July 2: BitTorrent came out; The commercial system linspire was acquired; Sony deploys Playstation now
Illustration leetcode - 3. longest substring without repeated characters (difficulty: medium)
preprocessor directives
JS scope and scope chain
[today in history] July 3: ergonomic standards act; The birth of pioneers in the field of consumer electronics; Ubisoft releases uplay
If the order is not paid for 30 minutes, it will be automatically cancelled. How to achieve this? (Collection Edition)
Difference Between Accuracy and Precision