我们介绍过了继承中的成员变量之间的关系和构造方法的关系,我们发现父类和子类大部分的变量和方法都是互通的,我们再来看一下继承中成员方法的关系。
这次直接写代码:
public class 继承中成员方法的关系 {
public static void main(String[] args) {
Ziii z1 = new Ziii();
z1.test1();
z1.test2();
}
}
class Fuuu{
public void test1() {
System.out.println("我是父类的成员方法");
}
}
class Ziii extends Fuuu{
public void test2() {
System.out.println("我是子类的成员方法");
}
}
输出结果:
我是父类的成员方法
我是子类的成员方法
我们可以得出:①子类对象可以调用子类的成员方法,也可以调用父类的成员方法。
但是如果我们想要把子类和父类中的方法名保持一致方便记忆呢。我们来修改代码:
public class 继承中成员方法的关系 {
public static void main(String[] args) {
Ziii z1 = new Ziii();
z1.test();
}
}
class Fuuu{
public void test() {
System.out.println("我是父类的成员方法");
}
}
class Ziii extends Fuuu{
public void test() {
System.out.println("我是子类的成员方法");
}
}
输出结果:
我是子类的成员方法
我们发现,我们没有办法调用到父类的成员方法(其实这里思想和成员变量的就近原则很相似),所以如果我们想要名字一样,但是还可以让子类用自己独特的方法, 毕竟作为子类,还是要有自己的想法,虽然说是子承父业,但是儿子太叛逆了,也是没有办法的。
这里的思想,就是方法的重写,利用和父类中一样的方法名,但是干着自己的事情。
在重写的方法上面,我们一般会加上伪标签 @Override(可以点击查看标签详细作用),来标志这是一个被重写的方法。
这个标签简单来说就是为了标志重写的方法,加上的时候只是用来标记,方便代码的阅读和理解,但是一般像eclipse的编辑器,会进行验证下面方式是否是被重写的方法,如果不是,就会报错。
重写的方法注意事项:
私有的方法不能被重写
父类中私有的方法,在子类中根本就看不到,继承不下来,就不能重写。子类可以自己定义一个和父类私有方法同名的方法,也不算重写,只能算是新定义了一个方法。
重写:使用父类的方法定义,修改为子类的实现。
方法在重写的时候,权限不能越来越小。子类应该是越来越强大,功能越来越多,不能将父类中拥有的方法,重写没了。