@Override标签的作用:
@Override是伪代码,表示方法重写。
@Override标签的好处:

  1. 作为注释,帮助自己检查是否正确的复写了父类中已有的方法
  2. 便于别人理解代码
  3. 编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错.

方法的重写 :
有了继承以后就可以考虑使用方法的重写。子类可以对父类中的方法进行覆盖。

说明:
当子类重写了父类中的方法后。那么再通过子类对象调用相同的方法,实际上调用的是子类重写父类的方法。

使用方法的重写的场景 :
如果子类对父类中的方法不满意那么可以考虑使用方法的重写

---------------------------------细节先了解-----------------------------------------

权限修饰符 返回值类型 方法名(形参列表){
方法体
}

父类被重写的方法 , 子类重写的方法

  1. 子类重写的方法的权限修饰符 不小于 父类被重写方法的权限修饰符。

  2. 子类重写的方法的方法名和形参列表必须和父类被重写方法的相同。

  3. 父类被重写的方法的返回值类型 子类重写的方法的返回值类型
    void void
    基本数据类型 对应的基本数据类型
    引用数据类型 对应的类型及子类的类型

  4. 子类方法抛出的异常不能大于父类被重写方法的异常 (等讲到异常时再讲)

注意:

1.父类中被private修饰的方法,子类不能重写。

2.子类和父类中相同的方法要么同时加static(不是方法的重写)要么同时不加static(方法的重写)

class Animal{
	
	//父类被重写的方法
	public void say(){
		System.out.println("动物说话了......");
	}
	
	//private 缺省的   protected public
	protected void a(){
		
	}
	
	//Object <- Number <- Integer (父类大,子类小)
	public Number c(){
		return null;
	}
	
	//1.父类中被private修饰的方法,子类不能重写。
	private void d(){
		
	}
	
	public static void f(){
		
	}
	
	public void info(){
		
	}
}

class Dog extends Animal{
	
	@Override
	public void info() {
		
	}
	
	//子类和父类中相同的方法要么同时加static(不是方法的重写)要么同时不加static(方法的重写)
	public static void f(){
		
	}
	
//	@Override
//	private void d(){
//		
//	}
	
	@Override
	public Integer  c(){
		return null;
	}
	
	@Override
	public void a(){
		
	}
	
	//方法的重写
	@Override //注解 - 用来说明所注解的方法是一个重写的方法,如果不是则会报错
	public void say(){//子类重写的方法
		System.out.println("汪汪汪......");
	}
}

public class OverrideTest {

	public static void main(String[] args) {
		Dog dog = new Dog();
		dog.say();
	}
}
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐