Eclipse
JDK
成员覆写,也即在子类继承父类时,在父类和子类,出现了结构、类型和名称完全相同的属性或者是变量。这时,我们就可以说子类覆写了父类的方法或变量。
现在在我们先介绍一下关于成员方法(method)的覆写的。方法覆写中常用的结构格式如下:class A{ //定义一个类A,也即父类 方法B; }class B extends A{ //定义一个类B,也即子类 方法B;}如上图,其中子类B中的方法B覆写了父类A中的方法B(提示:类A和类B的方法B中的内容不同)
下面,我们通过代码例子,来让大家看看成员覆写的实现。例子中,我们定义一个父类Person类,定义一个成员方法void say()方法,并定义一个Man类并继承Person类,并也定义了一个成员方法say()。在代码中,我们使用Person p=new Man();此名的含义是父类定义了一个对象变量,而此变量是由子类Man实例化的。如果使用Man m=new Man();定义的话,此时m.say()依然输出的是Man类中的方法。由图示所示,此时,我们成功覆写了父类中的方法。
如果我们需要使用父类的方法怎么办呢。这时我们可以使用super关键字。super可以对类进行实例化,以及调用父类的方法。如下图所示,我们在Man类中的say方法使用super.say();在运行代码时,我们可以看到结果即“Hi大家好,我是一个人类”。表明,super.say()调用了父类的方法。
方法重载是在同一个类中,出现的方法的名称参数,但方法的返回类型,或参数个数不同,参数的类型不同。程序会根据这些不同选择不同的方法来执行,在前面我们已介绍过构造方法的重载。这里我们来看一下普通方法的重载。
在图中,我们定义一个Man类,它有name(姓名)和Hobby(爱好)两个成员变量,和三个设置变量的方法和一个用于输出信息的say()方法。其中实现重载的三个方法是public void setValue();//无参数public void setValue(String name);//只有一个参数public void setValue(String name,String hobby);//有两个参数。我们通过在声明三个对象m1,m2,m3;并使用以下三个方法来实现重载方法的调用并输出相应的信息: m1.setValue(); m1.say(); m2.setValue('小明'); m2.say(); m3.setValue('小红','Java'); m3.say();从图中的结果来看,程序根据参数个数的不同进行了方法的选择,即实现了重载
上图只是展示了参数个数不同的重载,对于参数类型不同等等,可以自行尝试编写。
方法重载是在同一个类中,而成员覆写是在父类和子类出现的!
如果你觉得不错,点个赞吧!