java类声明需选public或默认修饰符,private/protected禁用于顶级类;字段分static(类共享)与非static(实例独有),final字段须在构造器中初始化;构造器无返回类型、不被继承,须显式调用super();this仅用于非static上下文,static方法不可访问实例成员。
类声明和访问修饰符怎么选
Java类最外层是class关键字加类名,但前面的修饰符直接影响类的可见性和用途。不写任何修饰符(默认包级私有)时,该类只能被同一包下的其他类访问;加public后必须与文件名一致,且可被任意位置引用。注意:private和protected不能用于顶级类——编译器会直接报错modifier private not allowed here。
常见误用是想把工具类设为private来“隐藏”,其实应该用final+私有构造器+静态方法组合实现不可实例化。
字段定义要注意初始化时机和内存归属
类里的变量叫字段(field),分static和非static两种。非static字段属于每个对象实例,每次new都会分配新内存;static字段属于类本身,所有实例共享一份。如果在声明时就赋值,比如private String name = "unknown";,这个初始化发生在构造器执行前,但若字段是final且未显式初始化,就必须在构造器里赋值,否则编译失败。
容易忽略的是:字段没加final也不代表能随意改——如果它指向一个可变对象(如ArrayList),外部仍可能通过引用修改其内容,这不是字段本身的可变性问题,而是对象封装没做好。
立即学习“Java免费学习笔记(深入)”;