子类重写父类方法:

父类:

//-定义一个父类--鸟类Birds:
public class Birds{
	//-定义父类鸟类Birds的fly()方法
	public void fly(){
		System.out.println("我可以自由飞翔!");
	}
}

子类:

//-定义一个子类--鸵鸟类(Ostrich),继承父类--鸟类Birds:
public class Ostrich extends Birds{
	//-重写父类Birds的方法fly()
	public void fly(){
		System.out.println("我只能在地上奔跑!");
	}
	public static void main(String[] agrs){
		//-调用重写后子类Ostrich的fly()方法
		Ostrich o=new Ostrich();
		o.fly();

		//-调用重写前父类Birds的fly()方法
       //-方法1:
		Birds b=new Birds();
		b.fly();
       //-方法2:
       o.getSuper();

	}

      //-用super显式调用父类Birds的fly()方法
      public void getSuper(){
        super.fly();
      }

}

运行结果:

子类重写父类注意事项:遵循:”两同、两小、一大“原则

1、两同:方法名相同,形参列表相同

2、两小:子类方法返回值类型比父类方法返回值类型更小或相等,子类方法声明抛出的异常类比父类方法声明抛出的异常类更小或相等

3、一大:子类方法访问权限比父类方法访问权限更大或相等

4、特别注意的是:覆盖的方法和被覆盖的方法,要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法,否则会发生编译错误

原文地址:https://www.cnblogs.com/baby-zhude/p/8017864.html