Да, возможно перегрузить public void print () в B параметром, не объявляя метод в классе A. Но вы должны определить абстрактный класс как:
abstract class A
{
String name;
public abstract void print();
}
Абстрактный класс можетесть абстрактный метод, а также нормальный метод тоже.Когда вы объявляете нормальный метод, вы должны предоставить реализацию и для этого метода.В противном случае вы должны объявить этот метод с абстрактным ключевым словом (в противном случае вы получите ошибку компиляции), т. Е. Не нужно давать реализацию.В вашем случае вы должны объявить метод printf () с абстрактным ключевым словом, как упомянуто выше.Когда вы расширяете класс A, то в классе B вы должны предоставить реализацию для метода printf (), который является абстрактным в классе A, который известен как переопределение метода.Кроме того, вы можете определить метод printf () с любым параметром, который называется перегрузкой метода.Но вы должны получить доступ к обоим методам, используя объект класса B только потому, что абстрактные классы не могут быть созданы, но могут быть унаследованы.Пожалуйста, обратитесь ниже код:
abstract class A
{
String name;
public abstract void print();
}
class B extends A
{
@Override
public void print(){
System.out.println("Hello");
}
//Overloaded method with String parameter
public void print(String s){
System.out.println("Hello" + s);
}
public static void main(String[] args){
new B().print();//calling inherited method with class B object
new B().print("Bishal");//calling overloaded method with class B object
}
}