黑马程序员技术交流社区
标题:
接口与抽象类继承
[打印本页]
作者:
秦岩
时间:
2012-4-3 22:42
标题:
接口与抽象类继承
我想知道接口与抽象类继承方法的共同点和区别?最好是详细的~ 谢谢~~ 什么情况下用接口比较好,什么时候用抽象类继承比较好?
作者:
胡川
时间:
2012-4-4 00:03
首先从定义区别。接口是一种行为规范,只要符合这种行为规范,就可以使用。
抽象类是类的一种抽象,他也不可以被实例化
1.抽象类中可以有方法的具体实现,接口中没有。
其中抽象类和抽象方法和接口中的方法一样不可以有具体 的实现。
2.接口中的变量是常量
3,抽象类单继承,接口从某种角度来说实现了多继承
4接口降低了耦合度,用接口做框架,有利于开发。
5.继承抽象类的子类必须是is-a 关系,接口不需要,所以接口的使用更广泛。
作者:
niceBoy
时间:
2012-4-4 00:11
相同点:
两者目的是定义一个规范,都不能被实例化。
两者区别:
接口中的所有方法必须是抽象的,并且不能指定方法的访问修饰符。
抽象类中可以有方法的实现,也可以指定方法的访问修饰符。
那么什么情况下用接口,什么情况下用抽象类呢?
1、抽象类可以提供成员的实现细节,而接口不能。设计抽象时如果要求提供成员的实现细节请选择抽象类。
2、如果设计抽象时选择抽象类,在以后的版本中可以随意为抽象类添加新成员。而接口在这方面就没那么灵活,只有修改现有代码才能添加成员。
3、一个类可以同时实现多个接口,但只能继承一个抽象类,如果要实现类似于多重继承的效果请选择接口。
作者:
陈苓
时间:
2012-4-4 00:51
抽象类的特点,以及细节?
答案: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:抽象类中的成员修饰符都是自定义
接口中的成员修饰符是固定的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2