1
Java的抽象类和接口不可以进行实例化
2
知识点:
1、不论如何 finally里面的代码是一定会执行的
2、finally里面的代码块比return早执行
3、多个return是按顺序执行的,只执行一次
public abstract class Test {
public static void main(String[] args) {
System.out.println(beforeFinally()); //1
}
public static int beforeFinally(){
int a = 0;
try{
a = 1;
return a;
}finally{
a = 2;
}
}
}
先执行a=2
然后a=1覆盖了a=2 此时a=1 try里面有return 所以现将a=1加入到临时栈中
然后先不return,先执行finally里面的a=2,由于finally里面没有return所以a=2不存入临时栈中
执行完毕后再return 返回的是临时栈中的a=1
public abstract class Test {
public static void main(String[] args) {
System.out.println(beforeFinally()); //2
}
public static int beforeFinally(){
int a = 0;
try{
a = 1;
return a;
}finally{
a = 2;
return a;
}
}
}
先a=1存入临时栈中,再执行finally
a=2,finally里面也有一个return ,这时会把a=2更新到临时栈中
参考:
作者:贱贱的梦想
链接:https://www.nowcoder.com/exam/test/77051414/submission?examPageSource=Intelligent&pid=55063941&testCallback=https%3A%2F%2Fwww.nowcoder.com%2Fexam%2Fintelligent%3FquestionJobId%3D10%26tagId%3D21003&testclass=%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91
来源:牛客网
3 对的好题
4
重写:三同一大一小(方法名、返回值类型、形参相同;访问权限>=重写前;抛出异常<=重写前)
接口:
1、接口中的方法都是隐式抽象的,会被隐式指定为 public abstract(只能是public abstract,其他修饰符都会报错)
2、接口中的变量会被隐式指定为 public static final
5
6
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然 eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。 5. 抽象类中可以包含静态方法,接口中不能包含静态方法 (因为静态方法不能被重写)
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类