重写,重载,傻傻分不清楚!!!
求大神帮我分析下,最好能有例子说明;
拜托了!!
重载一般是在一个类中进行的,函数或方法名相同,参数个数或类型不同区分调用的。
eg:public double sum(int a,int b)(){} public double sum(int a,int b,int c)(){}
public double sum(double a,int b)(){}等等像这样子的就是重载。
而重写是指函数继承中,子类要对父类的某个方法进行改动时所进行的操作。
eg:父类(如动物)中定义一个方法 输出“动物会跑”,你可以在子类(如狗)中定义同样的方法 输出“狗会跑”将父类覆盖掉。
还要例子?
给你例子。
abstract class A {
public A(){} //这个是无参的构造函数
public A(int a){} //这个是有参数的构造函数。这两个方法名字是一样的,但是参数不同,称为方法的重载
public abstract void say(){
system.out.println("这个A 类的say方法")
};
}
class B extexds A{
public void say(){
//这个地方如果什么都不写就是直接使用父类的方法,直接打印这个A 类的say方法
system.out.println("这个是B 类重写A 类的say方法")
//但是如果A 类的方法你不想要,而是想打印"这个是B 类重写A 类的say方法"这句话,就需要重写父类的say方法。这个就叫重写
}
}
方法重载:方法名相同的方法必须在同一个类中,且方法参数的个数、类型或者顺序不同,与方法的修饰符或者返回值没有关系;
方法重写:方法是从父类继承过来的,但是当对于父类的方法实现功能不满意时可以在子类中重写,方法的名称、参数类型、参数个数以及返回类型必须与父类的方法相同
重写是父类的方法不能满足需求,我们对他进行改造他们的函数名,函数返回值和参数必须相同
而重载是返回值,参数可以不同但是方法名必须相同,但是返回值不能作为区分重载函数的标志
呵呵哒。这有什么分不清的,他们两个本来就没有什么关系。
重写是继承关系里面的,继承父类的方法,如果方法子类不适用,可以重写父类的这个方法而已。
而重载是构造函数里面的方法。方法名字一样,但是里面的参数不一样这叫重载。
这两个东西没有关系的。你别把他们放在一起混淆了,你只要记得继承里面是重写。构造函数里面是重载
重写(覆盖,override,overwrite): 重写父类的方法。
重载(overload): 一个类里有多个同名方法。怎么区分它们呢,它们有不同的传入参数(不同类型、不同个数),使用这些方法时传入参数的类型、个数决定了用的哪个方法。