Long是long长整形的包装类。
**区别:**Long定义的变量为一个Long类型的对象;对应的是对象的引用地址,而long定义的变量为一个长整形数值的数值变量。
类里面有方法和属性,而基本数据类型里面没有方法和属性。
到底是选择Long 还是long这个还得看具体环境,如果属性不能为null,那么就用long,因为它默认初值为0,如果这个字段有可能取到null,那么就应该选择Long,因为long不为空。
在定义一个POJO类时,若某个属性不是主键,则其可能存在值为Null的情况,此时,若定义该属性为long,则在特殊情况下会报错,因为long不允许null情况,要将该属性定位为Long。
1.抽象类是对一种事务的抽象,是对整个类进行抽象,包括属性,行为(方法)。接口是对行为(行为)的抽象。如果一个类继承或实现了某个抽象类,那么一定是抽象类的种类(拥有同一种属性或行为的类)。接口强调特定功能的实现,而抽象类强调所属关系。
2. 设计层面不同,抽象类作为很多子类的父类,是一种模板设计,而接口是一种规范,它是一种辐射式设计,也就是说对于抽象类,如果需要添加新的方法,可以直接在抽象方法中添加实现,子类可以不用变更,而对于接口不行,如果接口进行了变更,那么实现它的类都需要做变更。抽象类表示的是”is-a”关系,接口表示的是”like-a”关系。
public: 使接口的实现类可以使用该常量;
static:接口不涉及和任何具体实例相关的细节,因此接口没有构造方法,不能被实例化,没有实例变量,只有静态变量。(static修饰就表示它属于类的,随的类的加载而存在的,当JVM把字节码加载进JVM的时候,static修饰的成员已经在内存中存在了。如果是非static的话,就表示属于对象的,只有建立对象时才有它,而接口是不能建立对象的,所以接口的常量必须定义为static。)
final:接口中不可以定义变量,即定义的变量前都要加上final修饰,使之成为常量,且必须赋初始值!(final修饰就是保证接口定义的常量不能被实现类去修改,如果没有final的话,由子类随意去修改的话,接口建立这个常量就没有意义了。
接口中方法的修饰符:public abstract(默认不写)
接口方法仅仅描述方法能做什么,但是不指定如何去做,所以接口中的方法都是抽象的(abstract方法)
接口和抽象类分别在什么时候使用?
如果拥有一些方法,并想让他们中的一些有默认的具体实现,请选择抽象类
如果基本功能在不断变化,那么就使用抽象类,如果使用接口,那么每次变更都需要相应的去改变实现该接口的所有类。
如果想实现多重继承,那么请使用接口,由于java不支持多继承,子类不能继承多个类,但一个类可以实现多个接口,因此可以使用接口来解决。