1.接口和抽象类的区别
相同:
都不能创建对象
都可以定义抽象方法,并且一定要在子类中重写
不同:
关键字不同:abstract 和 interface
接口中的所有方法都是抽象方法
抽象类中既可以有抽象方法也可以有普通方法
接口中的方法可以给任意权限,接口中的方法权限只能是public
抽象类只能是单继承,而接口可以多实现
2.重载(overload) 和 重写(overwrite) 的区别
重写的规则
必须有继承关系,子类重写父类的方法
- 方法名,形参列表必须和父类保持一致
- 返回值类型要么相同,要么子类方法的返回值类型是父类方法返回值类型的子类
- 访问权限修饰符要么相同,要么子类访问权限修饰符大于父类
- 方法异常的抛出,要么相同,要么子类方法抛出的异常比父类重写方法抛出的异常更小或相同
-- 方法的重写和重载都是实现多态的方式,区别在于前者是实现的运行时多态,后者是实现的编译时多态.
3.StringBuffer , StringBuilder 和 String 的区别
String 字符串常量不可变,使用字符串拼接时会开辟新空间
stringBuffer 字符串变量可变,线程安全,字符串拼接直接在字符串后追加
StringBuilder 字符串变量,可变,非线程安全的,字符串拼接直接在字符串后追加
3.1.StringBuffer 执行效率高于 StringBuilder 高于String
3.2. String是一个常量,不可变的,所以对于每一次 += 赋值都会创建一个新的对象,StrignBuffer 和 StringBuilder 都是可变的,当金星字符串拼接时采用 appen