您的位置:首页 > 其它

抽象类和接口

2015-11-07 10:27 239 查看

1.抽象类

1)当一个类用abstract关键字修饰的时候,那么这个类就叫做抽象类

2)抽象类中可以有抽象方法,也可以没有抽象方法,也允许存在非抽象的方法。

3)抽象方法是一个方法被用abstract关键字修饰的时候,那么这个方法就叫做抽象方法

4)如果一个类中含有被abstract修饰的抽象方法,那么该类必须被abstract关键字修饰,使他成为一个抽象类

5)抽象方法是一种不完整的方法,它只有方法的声明,但是没有方法体的存在。

比如:
<span style="font-size:14px;">abstract void a();</span>
6)如果从一个抽象类继承的话,并且想创建该类的对象,那么其子类必须实现抽象类中的所有抽象方法,否则的话,该子类仍然是一个抽象类。

7)抽象类是很有用的重构工具,因为它使得我们可以很容易的将公共方法沿着继承的层次结构向上移动。

2.接口

1)抽象类只是提供了接口的部分,但是没有提供任何相应的具体实现,这些实现都必须让继承它的子类去实现。

2)接口用interface关键字修饰,他可以产生一个完全的抽象类,他根本就没有tigo 任何具体的实现,只是允许创建者确定方法的名字,参数列表和返回值类型,但是没有方法体。接口只是提供了形式,但是没有提供任何具体的实现。

3)接口不但是一个抽象类,而且它允许人们通过创建一个能够被向上转型为多种基类的类型。

4)让某个类来实现接口的话,需要使用implements关键字,比如:

<span style="font-size:14px;">interface A{
int a();
}

public class B implements A{
//.....
}</span>


5)一旦某个类实现了某个接口,那么它的实现就变成了一个普通的类

6)接口中的域:一般都是public static final修饰的,这些可以省略不写,常量的名字一般是由英文大写字母组成的,每个单词之间用下划线分隔。在接口中定义域,不能是“空白final”,但是可以被非常量表达式初始化。而且因为域是static的,所以在类的第一次被加载时就可以被初始化,这个发生在任何域首次被访问时,并且这些域不是接口的一部分,他们的值被存储在接口的静态存储区域内,比如:

<span style="font-size:14px;">public static final int NUMBER_SIZE = 5;</span>


7)接口中方法:当要实现一个接口的时候,在接口中被定义的方法必须被定义为public的,否则的话,它们将只能得到默认的包的访问权限,这样在方法被继承的过程中,其可访问权限就被降低了,这是java编译器所不允许的。

8)java只支持单继承,不像c++一样可以支持多继承,因为接口的出现,在java中实现多个接口,相当于实现了多重继承。

9)一个接口可以有多种不同的实现,在最简单的情况下,它的体现形式通常是一个接收接口类型的方法,而该接口的实现和向该方法传递的对象取决于方法的使用者

3.关于接口和抽象类的一些小问题:

1)接口可以实现接口

2)类可以实现一个或者多个接口

3)接口可以继承接口

4)接口可以嵌套在类或者其他的接口之中

5)当实现某个接口的时候,并不需要实现嵌套在其内部的任何接口,而且,private接口不能再定义它的类之外被实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: