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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 嘻嘻哈哈嘻嘻 中级黑马   /  2014-7-10 16:44  /  1678 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

interface interdemo              //定义了个接口
{
public static final int a = 40;
public abstract void show();
}
abstract class absdemo          //定义了个抽象类
{
public static final int a = 40;
public abstract void show();
}
class testin implements interdemo
{
public void show()
{
  System.out.println(a);
}
}
class testin2 extends absdemo
{
public void show()
{
  System.out.println(a);
}

}



这两个使用起来好像没什么区别,然后抽象类和接口的具体区别在哪?

11 个回复

倒序浏览
抽象类与接口的区别:
1.抽象类只能被继承,而且只能是单继承
接口需要被实现而且,他可以多实现
2.抽象类中可以定义非抽象方法,子类可以直接继承使用
接口中都是抽象方法需要子类去实现
3.抽象类使用的是is a 关系
接口使用的是like a 关系
4.抽象类的成员修饰符可以自定义
接口中的成员修饰符是固定的。全部是public的

像你刚刚写的这个程序中,如果实际中真的碰到的话还是建议使用接口吧,这样的话扩展性更好,实现可以多实现,但继承只能是单继承,你继承了absdemo这个类,就不可以在继承其他类了,如果以后需要有其他功能类需要你继承,那就继承不了了,但如果是接口的话,你想实现几个就实现几个,而且实现的时候还可以继承,这样的话两个功能一样的接口和抽象类,你选哪个呢
回复 使用道具 举报
接口中的成员全是抽象的,抽象类里还可以定义非抽象的成员
回复 使用道具 举报
抽象类被abstract修饰的class
接口是interface。
接口是一种特殊的抽象类。
相同点:都不能对象的实例化。

他们之间的不同点还是比较多的:
接口中的变量被public static final修饰的常量,而抽象类中的变量的修饰符可以自定义。
接口中的方法全都是public abstract修饰。接口中的方法都是抽象方法,没有具体实现。
而抽象类中的方法可以有非抽象的。
接口中没有构造函数,而抽象类中可以有构造函数。
抽象类是被子类继承的(用的是extend),而接口是要被其他类实现(用的是implements)。继承抽象类的子类不一定要全部实现抽象类中的抽象方法,但是实现接口的类必须要实现接口中的所有方法。
抽象类只能被单继承,而接口可以被多实现。
回复 使用道具 举报 1 0
学习了   
回复 使用道具 举报
淡夜清风 发表于 2014-7-10 22:43
抽象类被abstract修饰的class
接口是interface。
接口是一种特殊的抽象类。

学习了.3q
回复 使用道具 举报
燿陚√揚葳 发表于 2014-7-10 22:08
抽象类与接口的区别:
1.抽象类只能被继承,而且只能是单继承
接口需要被实现而且,他可以多实现

谢谢回答 学习了
回复 使用道具 举报
接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。
回复 使用道具 举报
······················································赞
回复 使用道具 举报
on-on 中级黑马 2014-7-11 09:25:29
10#
学习了喽。。。
回复 使用道具 举报
接口是可以多继承的,而抽象类则只能单继承。
回复 使用道具 举报
抽象类和接口的区别:
1、从成员变量上区别:抽象类可以有任何形式的成员变量(访问类型可以任意),
     而接口中只能有默认的public static final修饰的成员变量;
2、从方法上区别:抽象类中可以有抽象方法(访问类型是public,protected),静态方法,构造方法,普通方法;
     而接口中只能有抽象方法(默认public abstract修饰);
3、一个类可以实现多个接口,但只能继承一个抽象类(extends必须写在implements之前)。

补充:a.接口可以继承接口。
           b.抽象类中可以有非抽象方法,但是有抽象方法的类一定是抽象类。
           c.普通类和抽象类唯一的区别:抽象类不能创建对象(被实例化),抽象类中有抽象方法。
              d. 抽象类和接口中定义的抽象方法,必须由子类或实现类全部实现,否则该类必须定义为抽象类。
          
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马