2017-06-06 5 views
0

Je suis nouveau à kotlin J'ai appris récemment à propos de l'héritage à kotlin, puis j'ai réalisé que nous ne pouvions pas marquer la visibilité d'une classe comme étant «protégée». Corrigez-moi si je me trompe ou existe-t-il un autre moyen de protéger une classe?Pourquoi ne pouvons-nous pas marquer la visibilité d'une classe comme "protégée" dans kotlin?

+0

Je suppose que vous voulez dire pour un cours de haut niveau. Comment cela aurait-il même un sens? Qu'est-ce que cela signifie de marquer une classe comme protégée? –

+0

Les classes imbriquées peuvent être protégées, exactement comme dans Java. –

+0

Vous devriez montrer un échantillon qui a un problème avec une erreur exacte, parce que ce que vous demandez * est * autorisé, vous devez donc faire quelque chose de différent. –

Répondre

5

Vous pouvez marquer protected uniquement les parties de classes, afin qu'elles deviennent accessibles uniquement à partir des classes dérivées. Vous pouvez marquer protected une propriété de membre, une fonction de membre ou d'une classe imbriquée:

open class X { 
    protected val v: SomeType = someValue 
    protected fun f() { } 
    protected class Y { ... } 
} 

Mais vous ne pouvez pas marquer protected tout ce qui ne fait pas partie d'une classe (par exemple, une classe de niveau supérieur ou la fonction), parce que le modificateur Cela n'aurait aucun sens: une entité de premier niveau n'est pas sujette à l'héritage, donc il ne peut y avoir aucune classe dérivée qui y accèderait.