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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贾成龙 中级黑马   /  2012-8-3 22:31  /  2146 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

抽象类中通常放的是类种事物(对象)共有的属性和方法,于是它的子类继承它的时候就自然有了其所有属性和方法,当有些方法是某种子类特有的时,就应该将这个方法分离出来,
以附加的形式(implements)添加进去。

4 个回复

倒序浏览
我觉得接口就类似于一个总纲,它制定了整个系统的规则和标准,所有实现类都是按照这个总纲来工作的,如果总纲有什么变动的话,就会牵一发而动全身,整个系统所有的子类都需要改动。
而抽象父类其中肯定是实现了系统的一部分功能,算是一种模板,有几个实现子类来完善其他功能,体现出不同的价值来。
其实接口能实现的抽象类也能实现。另外,java只能实现单继承,而可以实现多个接口,利用这可以弥补类似c++的多重继承               
回复 使用道具 举报
1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。

2.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。

3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。

4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。

5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。

6.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。

7.接口中的方法默认都是 public,abstract 类型的。

回复 使用道具 举报
抽象类用abstract class定义, 接口用interface定义
抽象类中可以有不抽象的方法, 接口中所有方法都是抽象的
抽象类用extends继承, 接口用implements实现
抽象类中的方法没有默认修饰符, 接口中的方法默认是public abstract修饰的
抽象类中的成员变量没有默认修饰符, 接口中的成员变量默认是public static final修饰的
一个类只能继承一个抽象类, 一个类可以实现多个接口
能用接口就不用抽象类, 除非必须要定义带有方法体的方法
回复 使用道具 举报
1.抽象类中可以有普通成员变量,接口中没有普通成员变量

2.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

3. 抽象类中的抽象方法的访问类型可以是public,protected但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

4. 抽象类中可以包含静态方法,接口中不能包含静态方法

5. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。

6. 一个类可以实现多个接口,但只能继承一个抽象类。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马