A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 秦岩 黑马帝   /  2012-4-3 22:42  /  1832 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我想知道接口与抽象类继承方法的共同点和区别?最好是详细的~ 谢谢~~  什么情况下用接口比较好,什么时候用抽象类继承比较好?

3 个回复

倒序浏览
首先从定义区别。接口是一种行为规范,只要符合这种行为规范,就可以使用。
抽象类是类的一种抽象,他也不可以被实例化
1.抽象类中可以有方法的具体实现,接口中没有。
其中抽象类和抽象方法和接口中的方法一样不可以有具体 的实现。
2.接口中的变量是常量
3,抽象类单继承,接口从某种角度来说实现了多继承
4接口降低了耦合度,用接口做框架,有利于开发。
5.继承抽象类的子类必须是is-a 关系,接口不需要,所以接口的使用更广泛。
回复 使用道具 举报
相同点:
两者目的是定义一个规范,都不能被实例化。
两者区别:
接口中的所有方法必须是抽象的,并且不能指定方法的访问修饰符。
抽象类中可以有方法的实现,也可以指定方法的访问修饰符。
那么什么情况下用接口,什么情况下用抽象类呢?
1、抽象类可以提供成员的实现细节,而接口不能。设计抽象时如果要求提供成员的实现细节请选择抽象类。
2、如果设计抽象时选择抽象类,在以后的版本中可以随意为抽象类添加新成员。而接口在这方面就没那么灵活,只有修改现有代码才能添加成员。
3、一个类可以同时实现多个接口,但只能继承一个抽象类,如果要实现类似于多重继承的效果请选择接口。

回复 使用道具 举报
抽象类的特点,以及细节?
答案:1、没有方法体的方法,称为抽象方法,必须存放在抽象类中,抽象方法和抽象类必须用abstract关键字来修饰。
      2、抽象类不可以被实例化,因为调用抽象方法没有意义。
     3、抽象类必须有其子类将抽象类中的抽象方法覆盖后,其子类可以实例化。否则,孩子类还是抽象类。

细节;
     1、抽象类中是否可以定义非抽象方法?
      可以。
      注意:抽象类也是用于描述事务的,只不过有些信息部具体。
     抽象类和一般类异同点?
     相同:
          抽象类和一般类用于描述事务,都可以定义成员。
     不同:
          抽象类中可以定义抽象成员函数,一般不可以
          抽象类不可以实例化,一般类可以实例化。
      2、抽象类中是否可以构造函数?
         有。
          而且抽象类虽然自身不可以实例化,但是其子类覆盖了所有的抽象方法后,是可以实例化的。所以抽象类的构造函数是用于给其子类对象是进行初始化的。
      3、抽象类通常都是一个父类?
        答:是,因为需要子类覆盖中的抽象方法
      4、抽象中的可以不定义抽象方法:
        答:可以,看上去没什么意义,实际存在的意义是不让这个类创建对象。
      5、抽象关键字不可以和那些关键字共存?
       答:非法的修饰符组合:abstract和final
       final:修饰了类是一个最终不可以被继承,abstract修饰的类必须是父类,需要被继承。
       static:抽象方法被static修饰,就具备可以被类名直接调用的特点,但是抽象方法被调用没意义。
       private:因为抽象方法被私有。无法被覆盖。

   
,接口的表现形式的特点。(接口就相当于插板,提供一个接口,。。。。。。。。。。。。。。。。。)
    答:
    1、里面的方法都是抽象的。
    2、接口中的成员都有固定的修饰符,最常见成员,全局常量,抽象方法:
          全局常量:public static final
          抽象方法:public abstract
   、接口中的成员都是public的。
   4、接口是不可以建立对象的,必须是由接口的子类覆盖了所有的抽象方法后,该子类才可以实例化。构造该子类是一个抽象类。
   5、类与类之间是继承关系,类与接口之间是实现关系。
   6、接口的出现可以多实现,避免了单继承的局限性。
   7、一个类在继承一个类的同时,还可以实现多个接口。
   8、接口与接口之间是继承关系,而且可以多继承。

,多实现和多继承的区别?
答:多实现是同时实现多个功能,多继承是


,抽象类和接口的区别?*****
   答:相同点:
            它们都是不断向上抽取出来的一个抽象的内容。
      区别1:抽象类只能被单继承
             接口可以被多实现,避免了单继承的局限性
      区别2:抽象类中可以定义抽象方法和非抽象方法,它可以用于定义体系的基本性内容,接口中只能定义抽象方法,它主要用于队形的功能扩展。
      区别3;抽象类是继承关系,是is a 关系。
             接口是实现关系,是like a 关系
      区别4:抽象类中的成员修饰符都是自定义
              接口中的成员修饰符是固定的。
   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马