1.JDK8.0接口新特性
static方法
只能通过 接口名.静态方法名 的方式来调用
default方法
可以通过 实现类对象.默认方法名 的方式来调用
在实现类的方法中通过 接口名.super.默认方法名 的方式来调用
可以重写
类优先原则
接口的实现类的父类含有与default方法同名的方法,且实现类(子类)没有重写该方法,实现类(子类)对象调用的是父类中的方法
接口冲突
一个类实现的多个接口中含有同名默认方法,且该类没有重写该方法,那么会报错
2.内部类
"this"是指(或者说:所代表的是)当前这段代码所在的类的对象,而"类名.this"是指"类名"的对象(一般在匿名类或内部类中使用来调用外部类的方法或属性)
内部类可以调用外部类的属性和方法
eat() 其实是 外部类.this.eat()
在类外部创建静态内部类对象
外部类.内部类 对象名 = new 外部类.内部类();
Person.Heart heart = new Person.Heart();
在类外部创建非静态内部类对象
外部类 外部类对象 = new 外部类();
外部类.内部类 对象名 = 外部类对象.new 内部类();
Person person = new Person();
Person.Heart heart = person.new Heart();
获取局部内部类对象(只能在方法内部)
eg:
public Comparable getUnnamedComparable(){
return new Comparable() { //返回一个实现Comparable接口的匿名局部(内部)类对象
@Override
public int compareTo(Object o) {
return 0;
}
};
}
匿名内部类
//创建实现了OnClickListener接口的匿名非静态内部类的匿名对象
eg:android
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(){
System.out.println("按下按钮");
}
});
3.异常处理
常见error
栈溢出:StackOverflowError
堆溢出:OutOfMemoryError (OOM)
Exception
try_catch_finally结构
try{
//可能出现代码的代码
}catch(异常类型1 e){
//处理异常1
e.getMessage();
e.printStactTrace();
}catch(异常类型n 变量名n){
//处理异常n
//父类的异常放在后面
}finally{
//一定会执行的代码,即使catch语句块中也有异常或return语句
}
throws结构
public void method() throws FileNotFoundException, IOexception{
//谁调用这个方法就把异常抛给谁,子类重写父类的方法抛出的异常不大于父类方法抛出的异常,父类没有定义throws子类需要try—catch-finally结构进行处理
}
4.手动抛出异常、自定义异常
throw new RuntimeException("手动抛出异常");
自定义异常
eg:
public class MyException extends RuntimeException{
private static final long serialVersionUID = 1L;
public MyException() {
super();
}
public MyException(String msg) {
super(msg);
}
}
标签:部类,java,内部,方法,笔记,010,new,异常,public
From: https://www.cnblogs.com/zhengcg/p/16589457.html