Модификатор защищенного доступа: - Все, что помечено как защищенное, видно в том же пакете, а также в подклассе.
Доступ по умолчанию: - По умолчанию это не ключевое слово.Применяется, когда не указан модификатор доступа.Это в основном модификатор уровня пакета.Все, что имеет такой доступ, видно в том же пакете.
Теперь эту разницу лучше объяснить с помощью примера
package p1
public class A
{
protected void fn()
{
}
}
пакет p1
public class B
{
A a1 = new A();
a1.fn();// fn() is visible inside the same package
}
}
Теперь мы подходим к подклассу в другом пакете
пакет p2
public class D extends A
{
void test()
{
A a1 = new new A();
//a1.fn() --> would give compilation error
fn();
super.fn();
}
}
fn(), super.fn()
не выдаст ошибку.
Таким образом, разница заключается в том, что в подклассе метод не может быть вызван через ссылку на суперкласс.Либо Вы можете позвонить напрямую или использовать супер.
Обратите внимание, что super.fn()
должен быть частью нестатического метода.