Java方法重写

方法重写规则

方法名和参数一致

public abstract class A {
    public abstract Object doSomething(String string);
}
public class B extends A {
    @Override
    public Object doSomething(String string) {
        return null;
    }
}

子类权限修饰符大于等于父类

public abstract class A {
    protected abstract Object doSomething(String string);
}
public class B extends A {
    @Override
    public Object doSomething(String string) {
        return null;
    }
}

子类返回值小于等于父类,Java 7以上

public abstract class A {
    public abstract Object doSomething(String string);
}
public class B extends A {
    @Override
    public String doSomething(String string) {
        return null;
    }
}

子类抛异常类型小于等于父类,或者子类不抛异常

public abstract class A {
    public abstract Object doSomething(String string) throws Exception;
}
public class B extends A {
    @Override
    public String doSomething(String string) throws IOException {
        return null;
	}
}
public class B extends A {
    @Override
    public String doSomething(String string) {
        return null;
    }
}