Comprensión sincronizada del código fuente
Método nativo significa que el método se implementa en otro lenguaje de programación relacionado con la plataforma y no hay problema de que lo implemente una subclase. Por tanto, no se puede abstraer y no se puede confundir con la abstracción. Por ejemplo, la clase FileOutputSteam tiene que lidiar con hardware y la implementación subyacente se implementa a través de API relacionadas con el sistema operativo, como el lenguaje C en Windows. Por lo tanto, si observa el código fuente de jdk, puede encontrar que el método abierto de FileOutputStream se define de la siguiente manera:
la apertura nula nativa privada (nombre de cadena) arroja FileNotFoundException
Si desea utilizar Java, llame a las funciones del lenguaje C de otras personas y no puede llamarlas directamente. Necesitamos escribir una función en lenguaje C de acuerdo con los requisitos de Java. Nuestra función en lenguaje C llama a la función en lenguaje C de otras personas. Debido a que nuestras funciones del lenguaje C están escritas de acuerdo con los requisitos de Java, nuestras funciones del lenguaje C se pueden conectar a Java. El método de acoplamiento en Java consiste en definir el método correspondiente a nuestra función C. El método correspondiente en Java no requiere escribir código específico, pero debe declararse al frente.
Creo que no es bueno usar sincronizado y abstracto, porque nunca he visto una situación así en muchos años de estudio y desarrollo. Creo que sincronizado debería aplicarse a métodos específicos para que tenga sentido. Además, el objeto de bloqueo de sincronización utilizado para la sincronización en el método es este, y es imposible determinar cuál es en el método abstracto.