1.什么是重写:
重写就是重新改写,对父类方法进行改写或改造的现象称为方法重写或方法覆盖,例如

public void eat() {
			System.out.println("用筷子吃饭");
		}
@Override
		public void eat() {
			System.out.println("用刀叉吃饭");
		}
	    public static void main(String args []) {
			Student1 stu = new Student1();
			
			stu.eat();
		}

输出结果

java重写接口方法 java如何重写_子类


2.为什么重写:

子类可以继承父类,但是有时子类需继承父类以适应新的要求或者说子类继承父类中的方法已经不能准确的描述子类自身的行为了,所以重写,让子类在父类中继承更灵活。

3.怎么样重写:
(1)如果父类中方法被final修饰,则此方法无法被重写。
(2)@Override注解可以判断当前方法是否重写了父类的某个方法,如果在方法上加上该注解没有出错,则说明重写了父类方法,否则没有重写父类方法。(标注一个方法为重写的方法,就在方法前一行写@Override)
(3)在子类中有重写方法,如果想调用父类中的方法,
1)在非静态代码块或方法中使用super
2)在静态代码块中或方法中,必须新创建父类对象,与继承相似。

public void eat() {
			System.out.println("用筷子吃饭");
		}
@Override
		public void eat() {
			System.out.println("用刀叉吃饭");
		}
		
		
		
		{
			super.eat();
		}
		
		public static void main(String args []) {
			Student1 stu = new Student1();
			
			stu.eat();
		}

java重写接口方法 java如何重写_ide_02


(4)重写要求:

1)方法名相同,参数列表相同(个数和参数列表相同,参数名字可以不同)

2)public protected friendly(如果没有写的话,默认是这个) private 重写后的方法的访问权限只能比父类的大或者相同。

3)返回值:如果父类方法的返回值为void或基本数据类型(byte int short long char double float boolean),则子类重写后的返回值类型必须父类相同。

如果父类返回值为引用类型,则子类重写后的返回值类型要么相同,要么是父类方法返回值的子类,不能是基本数据类型。

比如:Object 如果是父类的返回值,那么,子类的返回值可以是String,不能是基本数据类型。

4)父类中static方法不能被重写

5)子类重写后的方法不能加static

( 总之 子类和父类在重写中不能出现static)