安卓学习日记

Android面试复习-Java基础

2019-07-31  本文已影响0人  Margolu

关键字final和static

final

final变量即为常量,只能赋值一次

final方法不能被子类重写

final类不能被继承

static

static变量:对于静态变量在内存中只有一个拷贝,JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问,也可以用对象来访问

static代码块:static代码块是类加载时,初始化自动执行的

static方法:可以直接通过类名调用,任何的实例都可以调用,因此static方法中不能用this,super关键字。不能直接访问不带static的成员变量和成员方法,只能访问所属类的静态成员变量和成员方法。

final,finally,finalize的区别

final

变量,类,方法的修饰符,被final修饰的类不能被继承,变量或方法被final被final修饰则不能被修改和重写

finally

异常处理时提供finally 块来执行清除操作,不管有没有异常抛出,此处代码块都会被执行。如果try语句块中包含return语句,finally语句块是在return之后执行

finalize

Object类中定义的方法,若子类覆盖了finalize方法,在垃圾收集器将对象从内存中清除前,会执行该方法,确定对象是否会被回收。

抽象类与接口的联系与区别

抽象方法

只有声明,没有具体实现,用关键字abstract修饰。抽象方法必须为public或protected

抽象类

在类前面必须用abstract关键字修饰,一般至少包含一个抽象方法。抽象类也可以有成员变量和普通方法。若一个类继承一个抽象类,则必须实现父类中的所有抽象方法,若子类没有实现父类的抽象方法,则也应该定义为抽象类

接口

用关键字interface修饰,接口中的变量隐式指定为Public static final变量。方法会被隐式的指定为public abstract,接口中的所有方法均不能有具体的实现,接口中的方法都必须为抽象方法。若一个非抽象类实现某个接口,必须实现该接口中所有的方法

区别

1. 抽象类可以提供成员方法实现的细节,而接口只能存在抽象方法

2. 抽象类的成员变量可以是各种类型,而接口中成员变量只能是public static final类型

3. 接口中不能含有静态代码块,而抽象类可以有静态方法和静态代码块

4. 一个类只能继承一个抽象类,用extends来继承,却可以实现多个接口,用implements来实现接口。

接口的意义

1. 有利于代码的规范

2. 有利于代码维护和扩展

3. 解耦作用,全局变量的定义,当发生需求变化是,只需改变接口中的值即可

4. 直接看接口就可以清楚具体实现类间的关系

父类的静态方法和属性不能被子类重写,但子类可以继承父类静态方法和属性

重载和重写的区别

重载:一个类可以有多个相同方法名的,但参数类型和个数都不一样

重写:子类继承父类,子类可以通过实现父类中的方法,从而新的方法把父类旧的方法覆盖

上一篇下一篇

猜你喜欢

热点阅读