Есть класс, который наследуется от org.junit.Assert:
import org.junit.Assert;
public class CustomAssert extends Assert {
@Override
static public void assertTrue(String message, boolean condition) {
System.out.println("Test");
}
}
Хочу переопределить метод родительского класса
static public void assertTrue(String message, boolean condition)
Но когда ставлю над ним аннотацию @Override, получаю ошибку: Error:(7, 5) java: method does not override or implement a method from a supertype
Подскажите пожалуйста, в чем проблема, ведь в родительском классе есть метод с таким же именем и с точно такой же сигнатурой (я его скопировал из родительского)?
Кусок кода из родительского класса:
public class Assert {
protected Assert() {
}
static public void assertTrue(String message, boolean condition) {
if (!condition) {
fail(message);
}
}
.......
}
Потому что в суперклассе переопределяемый метод - static. Static методы нельзя переопределять. Их можно "перекрыть" (не указывать аннотацию @Override
), но тогда полиморфное использование методов при наследовании будет недоступно. И это будет не переопределение, это будет - перекрытие.
Приведу пример для ясности
Перекрытие
public class Main {
public static void main(String[] args) {
A a = new A();
A b = new B();
a.doSomething(a);
b.doSomething(b);
}
}
class A {
public static A doSomething(A a) {
System.out.println("A");
return a;
}
}
class B extends A {
public static A doSomething(A a) {
System.out.println("B");
return a;
}
}
* Output: A A
Переопределение
public class Main {
public static void main(String[] args) {
A a = new A();
A b = new B();
a.doSomething(a);
b.doSomething(b);
}
}
class A {
public A doSomething(A a) {
System.out.println("A");
return a;
}
}
class B extends A {
@Override
public A doSomething(A a) {
System.out.println("B");
return a;
}
}
* Output: A B
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Нужно сделать авто логин в приложенииСоздано оно на Android Studio и авторизация на Firebase
У меня есть 3д вектор который хранит в себе Yaw, Pitch, Length
При отрисовке 3000 вершин телефон уже начинает тормозить