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ácterfinal 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ónimport 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! .