Java与C++区别:重载(Overloading)

Java中一个类的函数重载可以在本类中的函数和来自父类中的函数之间进行,而C++类中的函数重载只能是本类中的(即不包括来自父类的函数),这是他们一个非常重要的区别。在其他方面的要求都是一致的,即要求函数名称一致,参数不同。只有返回值类型不同的函数,不能构成重载(会有编译错误,提示函数定义重复)。

1. Java的函数重载范围是整个继承体系中的可见函数

public class OverrideAndOverload {

    public static void main(final String[] args) {
        // TODO Auto-generated method stub
        OverClassB obj = new OverClassB();
        obj.say("hi");
        obj.say(123);
    }

}

class OverClassA {
    public void say(final String words) {
        System.out.println("A: " + words);
    }
}

class OverClassB extends OverClassA {
    public void say(final int n) {
        System.out.println("B: " + n);
    }
}

2.而C++中的类中的函数重载的范围只能是本来中的函数,如果本类中的函数与父类的函数名称重合那么就会隐藏父类相应的函数(不会产生重载的效果)。如果继续使用父类的函数则编译无法通过:

#include <iostream>
#include <cstdlib>

using namespace std;

class A {
    public:
        void say(const char* words) {
            cout<<"A: "<<words<<endl;
        }
};

class B {
    public:
        void say(int n) {
            cout<<"B: "<<n<<endl;
        }

};

int main() {
    B b;
    b.say("haha");//此行产生编译错误

    system("pause");
    return 0;
}
时间: 2024-08-12 17:38:53

Java与C++区别:重载(Overloading)的相关文章

Java 重写(Overriding)和重载(Overloading)

方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现. 重写是父类与子类之间多态性的一种表现 重载是一类中多态性的一种表现.

java中方法的重载与重写的区别

JAVA中方法的重载与重写 1)  方法的的参数上看:重载后的方法与源方法在参数的类型以参数列表的顺序上会发生改变,而重写后的方法在参数的数据类型与参数列表的顺序不会发生改变 2)原方法是否对被覆盖:重载后的方法不会覆盖原方法,而重写后的方法会覆盖父类中的方法,调用时也只会调用重写后的方法. 3)调用方法的对象上:重载后的方法被调用时,调用对象不同时,调用的方法不同,产生的结果也不同:而重写后的方法被调用时,无论调用的对象是父类或者子类的对象,调用的方法相同,产生的结果也一样

Java 重写(Override)与重载(Overload)区别

2019-04-1217:31:19 (1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading). (2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding). (3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现 原文地址:https://www.cnblogs.com/houtian2333/p/10697415.h

JAVA SE中方法重载和方法重写及数据库中子程序的重载

首先方法重写和方法重载是建立在Java的面向对象的继承和多态的特性基础上而出现的.至于面向对象的继承和多态的特性我就不在这里多说了.继承是指在一个父类的基础再创建一个子类,这样子类就拥有了父类的非私有的特性,同时子类还可以扩展自己的特性,这样就引出了方法重写和方法重载! 一.方法重写(Override)         在Java中如何来定义重写:Java程序中类的继承特性可以产生一个子类,子类继承父类就拥有了父类的非私有的属性(方法和变量),在子类中可以增加自己的属性(方法和变量),同时也可以

Java 重写(Override)与重载(Overload)

1.重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变.即外壳不变,核心重写! 参数列表和返回值类型必须与被重写方法相同. 访问权限必须低于父类中被重写方法的权限. 父类成员方法只能被子类重写. final 和static修饰的方法不能被重写,但是static 的方法可以被再次声明. 父类方法不能被继承,则不能重写 父类和子类在同包内,子类可以继承父类所有方法除了final修饰,和private修饰的. 父类和子类不同包,public 和pr

java中的方法——重载

重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态性的一种表现. (2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义. 调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性. (3) 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同.无法以返回

JAVA和C++区别

Java和C++都是面向对象语言.也就是说,它们都能够实现面向对象思想(封装,继乘,多态).而由于c++为了照顾大量的C语言使用者, 而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学.它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c++的固有缺陷. Java和c++的相似之处多于不同之处,但两种语言问几处主要的不同使得Java更容易学习,兄弟连javaEE培训

对比C++与Java中的函数重载、覆盖、和隐藏

                                  在C++中 1.函数的重载 C++中的函数的重载要求的是  函数名相同 参数列表必须不同  返回值类型可以相同也可以不相同:只有参数列表不相同,在函数调用时,编译环境才能准确抉择调用的是哪个函数.例如:void display():void display(int  i);void dispaly(double  i);void  display(int i,double i); void display(double  i,i

C++与Java的语法区别

C++与Java的语法区别 首先,两个大的不同是主函数和怎样编译的不同,接下来是许多小的区别. main 函数C++//自由浮动的函数int main( int argc, char* argv[]){    printf( "Hello, world" );}Java// 每个函数都必须是一个类的一部分;当java <class>运行是一个特定类的主函数会被调用// (因此你可以让每个类都有一个main函数,这在写单元测试是很有用)class HelloWorld{   

Java中的Overload(重载)与Override(重写、覆盖)

java中的方法重载发生在同一个类中两个或者多个方法的方法名相同但是参数不同的情况,方法重载是指子类与父类之间子类重新定义了父类的方法,重写的方法与原方法签名.返回值.参数完全相同.Overload(重载) 重载Overload是一个类中多态性的一种表现,是编译时的多态性.方法重载是让类以统一的方式处理不同类型数据的一种手段.重载发生在同一个类中.同名的方法如果有不同的参数列表(参数个数.类型)则视为重载. java方法的重载,就是可以在类中创建多个方法,这些方法具有相同的名字,但具有不同的参数