Access Modifiers: Python vs Java Comparison
Side-by-Side Comparison Table
Feature Java Python
Public `public` keyword
No underscore (e.g., `name`)
Protected `protected`
Single
keyword
underscore (e.g., `_name`)
Private `private` keyword
Double underscore (e.g., `__name`)
Enforced by Compiler? Yes No (uses convention)
Accessible in Subclass Yes (protected/public)
Yes for `_var`, No for `__var`
Outside Class Access `public/protected`
`_var` possible,
allowed`__var` via mangling
Code Examples
Java:
public class Student { Python:
public String name = "Ram"; class Student:
protected int age = 20; def __init__(self):
private double gpa = 8.9; [Link] = "Ram" # public
} self._age = 20 # protected
self.__gpa = 8.9 # private