java学习笔记010

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);
	}
}
posted @ 2022-08-17 16:02  香菇无盐  阅读(23)  评论(0)    收藏  举报