您的位置:首页 > 编程语言 > Java开发

JAVA方法、JAVA接口、抽象类(抽象方法)

2013-11-20 05:12 253 查看
一、JAVA方法:

在Java语言规范中,一个方法的特征仅包括方法的名字,参数的数目和种类,而不包括方法的返回类型,参数的名字以及所抛出来的异常。在Java编译器检查方法的重载时,会根据这些条件判断两个方法是否是重载方法。

重写/覆盖(overriding):必须发生在继承中

1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果,也就是要求返回值、方法名、参数都完全一样。

2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;

3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;

4、覆盖只对父类中的非私有方法有效。子类方法的访问权限不能小于父类。

5、final修饰的方法不允许被重写

6、protect修饰的方法在包内和包外都可以被覆盖。

7、“方法重写”实现的是运行时多态,也叫动态多态性。

重载(overloading):

1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int,float),但是不能为fun(int,int));

2、不能通过访问权限、返回类型、抛出的异常这些方式进行重载,也就是这些因素不能构成重载,但是这些元素在重载的方法上是可以不同的。

3、方法的异常类型和数目不会对重载造成影响;

4、重载也可以发生在继承关系中。

5、“方法重载”实现的是编译时多态,也就是静态多态性

二、JAVA接口:

public interface Actionlistener{

public abstract void actionPerformed(ActionEvent event);

}

1、一个类可以实现多个接口。

2、接口的方法只能是抽象的、公开的,abstract/public可以省略,还要确定接口的返回值及参数。接口可以有public、static和final属性。

3、接口不能有构造器,

4、一个类可以实现多个接口,声明方式 class son implements interfaceName1,interfaceName2{},其实这种声明的完整表达方式是class son extends Object implements interfaceName1,interfaceName2{}.

5、接口可以包含域,但是这些域不是接口的一部分,它们的值被存储在该接口的静态存储区内;域隐式为public、static、final的(域名通常大写且单词之间以下划线连接),域不能是“空final”,在使用之前必须显式地初始化,但可以被非常量表达式初始化。

6、如果一个类实现了一个接口,而没有实现接口的所有方法,则它必须被标注为abstract(抽象类)。一个抽象类的子类必须实现它未完成的方法,假如该项子类仍不会实现接口的所有方法,那么该项子类依然需要被标注为abstract。

三、抽象类:含了抽象方法的一个类叫作“抽象类”。

即使不包括任何abstract 方法,亦可将一个类声明成“抽象类”。如果一个类没必要拥有任何抽象方法,而且我们想禁止那个类的所有实例,这种能力就会显得非常有用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: