• 区分异同


    一、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>();则不行

     

  • 相关阅读:
    Job for docker.service failed because the control process exited with error code. See
    连接数据库出现The server time zone value '�й���׼ʱ��' is unrecogni等问题的解决方案
    【面试】SSH 框架原理
    【面试】Spring 执行流程
    【面试】Redis
    Innosetup打包自动下载.net framework 动态库及替换卸载程序图标.
    分享一个带有合计行功能的DataGridView扩展
    记录一次系统优化
    使用 Cordova(PhoneGap)构建Android程序
    分享一个换肤解决方案
  • 原文地址:https://www.cnblogs.com/bkyy/p/8058445.html
Copyright © 2020-2023  润新知