This is a developed behavior.
The protected modifier in Kotlin is similar to Java, but has additional restrictions.
Protectd in Java :
- Visible to inhalation
- Visible in package
Protectd in Kotlin :
So, according to this code, we cannot access the protected method
class Child : Abstr(){
private val subChild: Abstr = Child()
override fun m() = subChild.m()
}
Java, :
package a;
public class SuperClass {
protected void superFunction() {}
}
package b;
public class ChildClass extends SuperClass {
void testFunction() {
((SuperClass) new ChildClass()).superFunction();
}
}
"" :
https://youtrack.jetbrains.com/issue/KT-21048