抽象类和接口有什么区别
参数 抽象类 接口 默认的方法实现 它可以有默认的方法实现 接口完全是抽象的。它根本不存在方法的实现 实现 子类使用 extends 关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。 子类使用关键字 implements 来实现接口。它需要提供接口中所有声明的方法的实现 构造器 抽象类可以有构造器 接口不能有构造器 与正常 Java 类的区别 除了你不能实例化抽象类之外,它和普通Java类没有任何区别 接口是完全不同的类型 访问修饰符 抽象方法可以有 public、protected 和 default 这些修饰符 接口方法默认修饰符是 public。你不可以使用其它修饰符。 main 方法 抽象方法可以有 main 方法并且我们可以运行它 接口没有 main 方法,因此我们不能运行它。 多继承 抽象方法可以继承一个类和实现多个接口 接口只可以继承一个或多个其它接口 速度 它比接口速度要快 接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。 添加新方法 如果你往抽象类中添加新的方法,你可以给它...
重载和重写的区别
重载 Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。 重写 Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是private类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法
int和Integer有什么区别
int 是 Java 提供的 8 种原始数据类型之一。Java 为每个原始类型提供了封装类,Integer 是 Java 为 int 提供的封装类。 int 的默认值为 0,而 Integer 的默认值为 null,是引用类型,即 Integer 可以区分出未赋值和值为 0 的区别,int 则无法表达出未赋值的情况, Java 中 int 和 Integer 关系是比较微妙的。关系如下: int 是基本的数据类型; Integer 是 int 的封装类; int 和 Integer 都可以表示某一个数值; int 和 Integer 不能够互用,因为他们两种不同的数据类型;
List 和 Map 区别
List 特点:元素有放入顺序,元素可重复; Map 特点:元素按键值对存储,无放入顺序 ; List 接口有三个实现类:LinkedList,ArrayList,Vector; LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢; Map 接口有三个实现类:HashMap,HashTable,LinkedHashMap Map 相当于和 Collection 一个级别的;Map 集合存储键值对,且要求保持键的唯一性; 特征清单之上,这个题目真正想考察的是集合体系的结构位置与两种数据组织的访问模型差异。本文补全体系图、复杂度对比、以及”什么时候该把 List 换成 Map”的重构信号。 体系位置:Map 不在 Collection 里Java 集合体系是两棵独立的树: Collection(单值容器)→ List / Set / Queue Map(键值容器)→ HashMap / TreeMap / LinkedHashMap / Concu...









