variable method make implement how java inheritance package final-class

java - method - Error "No se puede subclasificar la clase final", pero la clase no es definitiva



java final method (4)

El carácter es una clase de java.lang (la clase contenedora de "char"). tienes que importar caracteres. Caracter en tu clase de jugador

package player; import characters.Character public class Player extends Character { }

Aquí está mi código:

package basic; public abstract class Entity {}

package characters; import basic.Entity; public abstract class Character extends Entity {}

package player; public class Player extends Character {}

Estoy recibiendo el

El tipo Player no puede subclasificar el carácter final class Character .

pero lo verifiqué un millón de veces y todavía tengo que usar final all ONCE una vez en mi proyecto. ¿Lo que da?


En este caso, recomiendo usar el nombre completo de la clase de Character en la cláusula de extends .

public class Player extends characters.Character {}

Los desarrolladores de Java con experiencia saben que java.lang.Character es final y, por lo tanto, no se puede extender. Al escribir la class Player extends Character , probablemente los dejes desconcertados.

Cada unidad de compilación importa implícitamente cada nombre de tipo público declarado en el paquete predefinido java.lang , como si la declaración import java.lang.*; apareció al comienzo de cada unidad de compilación inmediatamente después de cualquier declaración de paquete. Como resultado, los nombres de todos esos tipos están disponibles como nombres simples en cada unidad de compilación.

Especificación de Java 11> 7. Paquetes y módulos> 7.3. Unidades de compilación

Por supuesto, sería más razonable elegir un nombre que no coincida con las clases del paquete estándar java.lang (como Person o GameCharacter ).


Está extendiendo java.lang.Character (que no necesita una importación, ya que proviene de java.lang ).

Inserte import characters.Character en su código de Player .

Referencia: usando miembros del paquete :

Para mayor comodidad, el compilador Java importa automáticamente dos paquetes completos para cada archivo fuente: (1) el paquete java.lang y (2) el paquete actual (el paquete para el archivo actual).


El carácter es una clase final como se define en los documentos de Java:

public final class Character extends Object implements Serializable, Comparable<Character>

por lo que no puede ser subclasificado.

Está obteniendo un error de esta clase de caracteres, que se está importando implícitamente . ¡Tener cuidado! .