Ava语言中方法重载与方法覆盖的区别
导语:在Java语言学习过程中,初学者往往分不清重载和重载。 实际上,方法重载(Overload )和方法重载(Override,又称重写) )都是Java多态性的体现,只是形式不同而已。 现就两者的异同作一简述。 小编介绍了Java语言中方法重载和方法覆盖的区别。 请阅读。
1方法超载与方法覆盖特点
1.1方法重载特点
用Java语言重载方法是指可以在类中创建多个方法。 实际上,它是一个类中多态性的表示,也称为静态多态性。
如下例所示:
1 class DBUtil{
2隐私服务器=' 127.0.0.1 '; //服务器地址
3 private String db='HRDB '; //数据库名称
4 publicstringgetdburl (字符串服务器,字符串数据库)//重载方法
5返回' JDBC:SQL server://' server ':1433; DatabaseName=' db;
6 }
7 publicstringgetdburl (字符串服务器)//重载方法
8 returngetdburl (服务器,数据库);
9 }
10公共字符串获取数据库(() /重载方法
11返回数据库(服务器,数据库;
12 }
13 }
14 publicclassstaticpolymorphismdemo {
15 publicstaticvoidmain (string args [ ] ) {
16 DBUtil util=new DBUtil (;
调用第17 //行的方法
18 system.out.println (util.get dburl (' 192.168.4.23 ',' CXHR ' );
调用第19 //行的方法
20 system.out.println (util.get dburl (' 192.168.4.23 ' );
调用第21 //行的方法
2 system.out.println (util.get dburl ();
23 }
24 }
方法重载的主要特点有以下几点。 第一个特征是方法名称相同; 第二个特征是方法个数、顺序、参数类型中的至少一个不同; 第三个特点是方法的返回类型不一定相同。 第四个特点是方法的修饰符可以不同。
1.2方法涵盖的特点
Java语言中的方法覆盖是指父类中的方法在子类中重新定义,方法签名相同(方法名称、参数数量和参数类型相同),也称为动态多态性。
如下例所示:
公共类基{
公共语音方法
}
公共类sub扩展库{
公共语音方法
}
方法涵盖的特点主要有以下几个方面。 第一个特征是方法覆盖只存在于子类和父类之间,而不能覆盖同一类中的方法。 第二个特点是父方法比子类方法可以抛出更多的异常。 第三个特征是父类方法的名称、参数签名和返回类型与子类方法匹配。 第四个特征是子类不允许将父类的静态方法作为非静态方法复盖,父类的非静态方法也不能被子类作为静态方法复盖。第五个特征是,子类的方法是父类第六个特点是子类不能覆盖父类的私有方法;第七个特点是子类可以通过两种方法覆盖父类的抽象方法。 一个是子类实现父类的抽象方法,另一个是子类重新声明父类的抽象方法。 第八个特点是家长班。 非抽象方法可以作为抽象方法涵盖。
2方法超载与方法覆盖异同
2.1方法重载与方法覆盖的相同点
在Java语言中,方法重载和方法覆盖有两个主要共同点。 第一个共同点是方法重载和方法覆盖都要求方法同名。 第二个共同点是方法重载和方法覆盖可以在抽象和非抽象方法之间使用。
2.2方法重载与方法覆盖的区别
在Java语言中,方法重载和方法覆盖的五个主要区别是: 第一个区别是方法重载不允许参数签名匹配。 相反,方法的覆盖要求参数签名匹配。 第二个区别是方法重载不限制返回类型是否匹配,而方法间谍w必须返回类型匹配;第三个区别在于方法重载可用于同一类的所有方法。 方法重载仅限于子类覆盖父类的方法;第四个区别在于,方法重载对方法的访问权限和抛出的异常方法没有限制要求,但对方法的覆盖有特殊要求;第五个区别在于一个方法可以在它所属的类中多次重载,而父类中的一个方法在子类中只复盖一次。
总之,方法重载(Overload )和覆盖(Overload )是Java多态性的不同表现。 重载(Overload )是类中多态性的表示,而重载(Overrid )是父类与子类之间多态性的表示。 利用方法重载和方法覆盖,不仅可以减少编码工作量,而且可以大大提高程序的可维护性和可扩展性。
【Java语言中方法重载与方法覆盖异同】相关文章: