问答详情
源自:9-2 Java 中的方法重写

父类定义一个private方法子类不可以重写,那这个怎么可以重写。

public class Overwrite {
	public static void main(String[] atgs) {
		B1 b = new B1();
		b.fun();
	}
}

class A1{
	private void fun() {
		System.out.println("A类中fun()方法执行");
	}
}

class B1 extends A1{
	public void fun() {
		System.out.println("B类中fun()方法执行");
	}
}


提问者:慕九州4223353 2017-09-21 09:23

个回答

  • 容错率
    2017-09-26 16:22:20

    http://blog.csdn.net/wn1017888485/article/details/46051981

    这个博客挺能解释问题的

  • johnnykuo2015
    2017-09-21 11:06:21

    在我看来,继承父类并重写父类的方法的目的是为了实现“多态”,也就是在调用方法时优先调用子类的方法

    但看了你的代码,你直接new出来一个B1的对象,并运行B1的fun();方法,这个时候B1是否重写父类的方法已经不重要了!

    最好的方式是这样的:

    public class OverWrite {

        public static void main(String args[]) {

            A1 a1 = new A1();

            A1 a2 = new B1();

            a1.fun();

            a2.fun();

        }

    }

    class A1{

        public void fun() {

            System.out.println("A类中fun()方法执行");

        }

    }

    class B1 extends A1 {

        @Override

        public void fun() {

            System.out.println("B类中fun()方法执行");

        }

    }