一、extends与implements的不同

1、在类的声明中,通过关键字extends来创建一个类的子类。

一个类通过关键字implements声明自己使用一个或者多个接口。 

extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法

implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用 

2、extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承

JAVA中不支持多重继承,但是可以用接口 来实现,这样就要用到implements,继承只能继承一个类,

但implements可以实现多个接口,用逗号分开就行了 比如 :

class A extends B implements C,D,E

接口实现的注意点:  

a.实现一个接口就是要实现该接口的所有的方法(抽象类除外)。 

b.接口中的方法都是抽象的。  

c.多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口。

 
  extends, 可以实现父类,也可以调用父类初始化 this.parent()。而且会覆盖父类定义的变量或者函数。

这样的好处是:架构师定义好接口,让工程师实现就可以了。整个项目开发效率和开发成本大大降低。    implements,实现父类,子类不可以覆盖父类的方法或者变量。即使子类定义与父类相同的变量或者函数,也会被父类取代掉。  
需要实现,不可以修改用implements,只定义接口需要具体实现,或者可以被修改扩展性好,用extends。

二、int与integer的区别

int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别:

  int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象

      Java为每 一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。

  1.Java 中的数据类型分为基本数据类型和复杂数据类型

    int 是前者而integer 是后者(也就是一个类);因此在类进行初始化时int类的变量初始为0.而Integer的变量则初始化为null.

  2.初始化时:

    int i =1;Integer i= new Integer(1)(要把integer 当做一个类看);但由于有了自动装箱和拆箱使得对Integer类也可使用:Integer i= 1;       

    int 是基本数据类型(面向过程留下的痕迹,不过是对java的有益补充),Integer 是一个类,是int的扩展,定义了很多的转换方法

Java 为每个原始类型提供了包装类型: 
      - 原始类型: boolean,char,byte,short,int,long,float,double 
      - 包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

        Integer a = new Integer(3);  
        Integer b = 3;                  // 将3自动装箱成Integer类型  
        int c = 3;  
        System.out.println(a == b);     // false 两个引用没有引用同一对象  
        System.out.println(a == c);     // true a自动拆箱成int类型再和c比较      
View Code

 

     例子:当需要往ArrayList,HashMap中放东西时,像int,double这种内建类型是放不进去的,因为容器都是装 object的,这是就需要这些内建类型的外覆类了。

  Java中每种内建类型都有相应的外覆类。

  Java中int和Integer关系是比较微妙的。关系如下:

  1)int是基本的数据类型;

  2)Integer是int的封装类;

  3)int和Integer都可以表示某一个数值;

  4)int和Integer不能够互用,因为他们两种不同的数据类型;

  举例说明

    ArrayList al=new ArrayList();

  int n=40;

  Integer nI=new Integer(n);

  al.add(n);//不可以

  al.add(nI);//可以
View Code

  并且泛型定义时也不支持int: 如:List<Integer> list = new ArrayList<Integer>();可以  而List<int> list = new ArrayList<int>();则不行