Java访问修饰符掌握程度测试
本测试包含10道关于Java访问修饰符的选择题,涵盖public、private、protected和默认访问权限的概念、用法和最佳实践。每题只有一个正确答案,完成后可查看详细解析。
正确答案:C. private
private修饰符提供最严格的访问控制,只允许在同一个类内部访问。这是实现数据封装的重要手段,可以隐藏类的内部实现细节,防止外部直接访问和修改。
正确答案:C. public、protected和默认
在同一个包中,子类可以访问父类的public、protected和默认访问权限的成员。private成员只能在定义它的类内部访问,子类无法直接访问。如果子类在不同包中,则只能访问public和protected成员。
正确答案:B. 只能在同一个包中访问
默认访问权限(也称为包访问权限)意味着成员只能在同一个包中的类访问。这提供了包级别的封装,适用于包内部的协作,但不允许跨包访问。
正确答案:B. 行1编译错误,行2编译成功
privateField是私有字段,只能在ClassA内部访问,子类ClassB无法访问,所以行1编译错误。protectedField是受保护字段,虽然ClassB在不同包中,但作为ClassA的子类,可以访问继承的protected成员,所以行2编译成功。
正确答案:B. 将字段设为private,通过public方法访问
这是Java封装的核心原则:将数据(字段)隐藏起来,通过公共方法(getter/setter)提供受控的访问。这样可以保护数据的完整性,验证输入,并在需要时修改内部实现而不影响外部代码。
正确答案:D. public
在接口中,所有方法默认都是public的,即使不显式声明。这是因为接口的目的是定义公共契约,供实现类使用。接口中的字段默认是public static final的。
正确答案:D. private
在单例模式中,构造方法应该是private的,这样可以防止外部代码直接创建类的实例。只有通过getInstance()静态方法才能获取唯一的实例,确保单例模式的正确实现。
正确答案:D. public private
一个成员不能同时使用多个访问修饰符。public和private是互斥的,不能同时使用。每个成员只能有一个访问修饰符:public、protected、默认或private中的一个。
正确答案:C. 供子类重写的方法
protected修饰符最适合用于需要被子类访问或重写的方法。它提供了比private更宽松的访问权限,允许子类访问,同时比public更严格,不允许无关的外部类访问。这在设计继承层次结构时非常有用。
正确答案:A. 所有计数器都是3
在同一个包中,Main类可以访问TestClass的public、protected和默认访问权限的成员。虽然不能直接访问private成员,但private成员可以在TestClass内部(如构造方法和showCounts方法中)被访问。创建了3个TestClass对象,所以所有静态计数器都是3。