private[this] (equivalent to protected[this]) means that that "y" is only visible to methods in the same instance. For example, you could not reference y on a second instance in an equals method, i.e., "this.y == that.y" would generate a compilation error on "that.y".
private[A] is the same as Java private, you can now see those members from other instances, but not outside the class and not in subclasses. protected[A] is identical. Note that this means that protected[A] != protected. That is, protected[A] var z is still invisible to subclasses.
You can also have private[packageA], which means that the member is visible in the scope of "packageA", which must enclose the class, either immediately or as a parent package, e.g.,