每日一练(2)
程序员文章站
2022-07-07 09:08:47
...
每日一练(2)
1. 类方法和对象方法
类方法是属于整个类的,而实例方法是属于类的某个对象的。
由于类方法是属于整个类的,并不属于类的哪个对象,所以类方法的方法体中不能有与类的对象有关的内容。即类方法体有如下限制:
- 类方法中不能引用对象变量。
- 类方法中不能调用类的对象方法。
- 在类方法中不能使用super、this关键字。
- 类方法不能被覆盖。
如果违反这些限制,就会导致程序编译错误。与类方法相比,对象方法几乎没有什么限制:
- 对象方法中可以引用对象变量,也可以引用类变量。
- 对象方法中可以调用类方法。
- 对象方法中可以使用super、this关键字。
2. 类,接口关系
- 类与类之间的关系为继承,只能单继承,但可以多层继承。
- 类与接口之间的关系为实现,既可以单实现,也可以多实现。
- 接口与接口之间的关系为继承,既可以单继承,也可以多继承。
3. 抽象类,接口
抽象类:
- 抽象类中可以构造方法。
- 抽象类中可以存在普通属性,方法,静态属性和方法。
- 抽象类中可以存在抽象方法。
- 如果一个类中有一个抽象方法,那么当前类一定是抽象类,而抽象类中不一定有抽象方法。
- 抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。
接口:
- 在接口中只有方法的声明,没有方法体。
- 在接口中只有常量,因为定义的变量,在编译的时候都会默认加上public static final。
- 在接口中的方法,永远都被public来修饰。
- 接口中没有构造方法,也不能实例化接口的对象。
- 接口可以实现多继承。
- 接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法,则实现类定义为抽象类。
4. 以下代码执行后的输出结果
public class Test {
public static void main(String[] args){
System.out.println(test());
}
private static int test() {
int temp = 1;
try {
System.out.println(temp);
return ++temp;
} catch (Exception e) {
System.out.println(temp);
return ++temp;
} finally {
++temp;
System.out.println(temp);
}
}
}
执行顺序为:
- 输出try里面的初始temp:1;
- temp = 2;
- 保存return里面的temp的值:2;
- 执行finally的语句temp:3,输出temp:3;
- 返回try中的return语句,返回存在里面的temp值:2;
- 输出temp:2。
结果为:1 3 2