#Java中抽象类和接口的不同

时间:2020-8-24 作者:admin


在eclipse的使用使用中会有些抽象的用法,举个例子,人,“人”是比较抽象的,怎么样才算是“人”呢?会说话是个“人”吗,会跑步是个“人”吗等等,因为这些都是人的特征,所以就有抽象出了“人”的概念

抽象类

  1. 概念:使用abstract修饰,继承时使用extends,由于类是抽象的,所以不能创建对象,同时,在类的内部的抽象方法无方法体并且要由子类去实现
  2. 格式:
    abstract class 类名{
    权限修饰词 abstract 返回值类型 类名();
    }
  3. 抽象类与普通类的区别:
    (1) 抽象类必须用public或protected修饰(若为private修饰,无法被子类继承,从而无法实现其抽象方法,在默认情况是public)
    (2) 若子类继承了该抽象类则必须要实现抽象类中的抽象方法,否则要将其子类也要定义为抽象类

那接口是什么呢?其实接口就相当于某团体具备着共同的特征或行为,举个例子,当我们去银行取钱的时候,会有不同的窗口,这些不同的窗口都可以帮你办理业务,因为他们有共同的任务,只不过由不同的窗口去实现

接口

  1. 概念:使用interface修饰,继承时用implements,由于接口不能有具体的特征,要靠继承的子类去实现,就好像公务员是一个职位,但不同的公务员负责不同的工作
  2. 格式:
    interface 接口名称{
    数据类型 数据名称; //表示为全局常量
    权限修饰词 返回值类型 方法名(); //表示抽象方法
    }
  3. 继承时,接口可以实现多个实现:
    class 子类 implements 接口1,接口2…{
    }
    在与类的继承一起使用时:
    class 子类 extends 父类 implements 接口1,接口2…{
    }
  4. 注意:
    (1) 接口中可拥有变量和方法,但是,不能在接口内部实现,只能由子类实现
    (2) 当接口中有public static final时,则修饰的变量变为常量
    (3) 当接口要使用时,必须通过子类的继承,由子类实现抽象方法的进行使用(当子类为抽象类时,则仍需要抽象类的子类进而实现类与接口中的全部抽象方法)

抽象类与接口的异同之处

  1. 相同点:
    (1) 两者均不能被实例化
    (2)两者的抽象方法中均不能有具体的实现

  2. 不同点:
    (1) 一个类只能继承一个类,而接口可以是多个,比如:
    在类的继承中:
    class 子类 extends 父类 {
    }
    这种继承的方法是正确的
    class 子类 extends 父类1,父类2,… {
    }
    这种是错误的,子类只能有一个父类,就好比一个儿子只能有一个亲爹

     	而接口:
     	class 子类 implements 接口1,接口2,...{
     	}
     	对接口继承的理解就好比,一个儿子可以有好多个干爹
    

    (2) 在定义时,接口中的变量是公共静态变量(但不能是具体的),而抽象类的是普通变量(可以是具体的)
    (3) 在抽象类中可以有在内部的具体实现方法(指的是普通方法),而在接口中不能有具体的方法(只能有抽象方法)

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。