Потому что во время вызова конструктора ClassA, где у тебя вызывается init из ClassC, объект ещё "не доделан", где-то внутри, до полноценного экземпляра ClassC, в частности, ему ещё не добавлены приватные методы ClassC.
Скопируй в консоль Хрома этот код:
код
class ClassA {
constructor(){
this.#methidA();
this.init();
}
init(){
}
#methidA(){
console.log('in ClassA.#methodA');
}
}
class ClassC extends ClassA {
init(){
console.log('*** this in init(): ', this);
debugger;
}
#methidC(){
console.log('in ClassC.#methodC');
}
callMethidC() {
console.log('*** this in callMethidC(): ', this);
debugger;
this.#methidC();
}
}
const c = new ClassC();
c.callMethidC();
и нажми ентер.
на брекпоинтах разверни в консоли экземпляр класса, который будет в последних выводах в консоль (это надо делать именно во время остановок на брекпоинтах, иначе будет одинаково).
можно увидеть, что в первом случае в [[PrivateMethods]] не хватает метода #methidC()
приватные методы, судя по всему, хранятся не в прототипе, а в какой-то скрытой области, которую можно увидеть только вот так, в момент дебага.
надо поисследовать, почитать спецификацию. Сам их не использую, у нас на работе TS )