JAVA_基础(一):

111 阅读4分钟

【1】 抽象类(Abstract Class)和接口(Interface)是Java中两种不同的抽象机制

它们在实现上有一些区别。下面是它们之间的主要区别:

  1. 定义方式:

    • 抽象类是用abstract关键字定义的类,可以包含抽象方法(没有方法体,只有方法签名)和具体方法(有方法体的普通方法)。
    • 接口是用interface关键字定义的,它只能包含抽象方法和常量(public static final修饰的变量),并且方法默认是publicabstract的,变量默认是publicstaticfinal的。
  2. 继承关系:

    • 一个类只能继承一个抽象类,使用extends关键字来实现继承。
    • 一个类可以实现多个接口,使用implements关键字来实现接口。
  3. 构造器:

    • 抽象类可以有构造器,并且在创建子类对象时会调用其父类的构造器。
    • 接口不能有构造器,因为接口是用来定义行为的规范,不包含实例化的概念。
  4. 成员变量:

    • 抽象类可以有实例变量,可以是各种类型的变量,包括基本数据类型和引用类型。
    • 接口中的变量默认是publicstaticfinal的,只能定义常量,而且变量的值不能在实现类中改变。
  5. 成员方法:

    • 抽象类可以有抽象方法和具体方法(有方法体的方法)。
    • 接口只能有抽象方法,实现类必须实现接口中的所有抽象方法。
  6. 多态性:

    • 抽象类可以通过向上转型,使得其引用指向子类对象,实现多态性。
    • 接口同样也可以通过向上转型,使得其引用指向实现类对象,实现多态性。
  7. 使用场景:

    • 抽象类通常用于创建一些相似类的通用模板,其中可能包含一些共同的方法实现,同时又要求子类提供一些特定实现。
    • 接口用于定义多个类共同遵守的规范,通过接口可以实现类与类之间的松耦合,使得代码更加灵活,方便扩展。
    • 1)   如果想让一部分方法拥有默认实现,使用抽象类。
    • 2)   如果想实现多重继承,必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
    • 3)   如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。

【2】基本数据类型

基本类型字节数
byte1
short2
int4
long8
boolean1 true/false
char2
float4
double8

# 【3】list、set、map

  1. List(列表):

    • List是有序集合,可以包含重复的元素。
    • List允许通过索引访问元素,并且可以根据索引插入、删除、替换元素。
    • 常见的实现类有ArrayList、LinkedList和Vector。
  2. Set(集合):

    • Set是无序集合,不允许包含重复的元素。每个元素在Set中只能出现一次。
    • 无序容器,无法保证每个元素的存储顺序,TreeSet通过Comparator或者Comparable维护了一个排序顺序。
    • Set没有提供索引的方法,因为元素的位置是不确定的。
    • 常见的实现类有HashSet、TreeSet和LinkedHashSet。
  3. Map(映射):

    • Map不是Collection的子接口或者实现类,Map和Collection同级,是一个接口。
    • Map是键值对的集合,每个元素包含一个键(key)和一个值(value)。
    • Map中的键是唯一的,每个键对应一个值,可以通过键来查找对应的值。
    • 常见的实现类有1)   HashMap、TreeMap、LinckedHashMap和HashTable。
    • TreeMap也通过Comparator或者Comparable维护了一个排序顺序。
  4. 适用场景

    • 1)   经常使用索引对元素进行访问,使用ArrayList,经常对元素进行增加删除操作,使用LinckedList
    • 2)   想让元素按照插入的次序进行有序存储,使用List
    • 3)   想要保证元素的唯一性,使用Set
    • 4)   想要使用键值对的形式进行数据存储,使用Map