los métodos públicos, etiquetados por public
están disponibles para todas las clases. Los métodos protegidos, etiquetados por protected
están disponibles para las subclases y las clases amigas, que son clases en el mismo paquete. Los métodos amigables, etiquetados por nada (por ejemplo, por defecto) están disponibles para las clases amigas. Los métodos privados están disponibles solo para la clase en sí.
Los métodos estáticos, etiquetados por static
están disponibles sin un objeto para acceder a ellos. Estos son llamados por ClassName.foo(), SuperClassName.foo() (innecesario si no se reemplaza, foo() es aceptable) o ClassName.foo() (innecesario, foo() es aceptable) Dinámico (consulte vocabulario ?? ?) etiquetados por nada (es decir, por defecto) están disponibles solo si uno tiene un objeto de la clase. ex: bar.foo(), this.foo() (innecesario, foo() es aceptable), o super.foo() (innecesario si no se reemplaza, foo() es aceptable) Los métodos reemplazados, anotados por @Override
son solo disponible a través de super.foo
Por lo tanto, en una instancia de ClassB, todos los miembros protected
y public
y los métodos de ClassA serán accesibles. En una llamada estática, solo se puede acceder a los métodos estáticos.
Error común en las respuestas, excepto en las de Bohemia.Incluso los privados ** son heredados ** - simplemente no están ** disponibles ** para el código de la subclase. Pero todavía están allí y funcionan, si se los llama de métodos ancestrales. –