属性基础知识 📅 2026/7/8 1:07:09 一、什么是Java属性属性 类中的成员变量用来描述对象的特征姓名、年龄、价格等。区分两种变量成员变量属性定义在类内部、方法外部属于对象/类局部变量定义在方法/代码块内仅当前代码生效public class Student { // 成员变量属性 String name; int age; static String school; // 静态属性 public void test() { int num 10; // 局部变量不是属性 }}二、属性的4种访问修饰符封装核心控制属性能被哪些类访问规范开发全部属性私有。开发规范属性一律 private外部不能直接访问通过 get/set 方法读写实现封装。三、实例属性 vs 静态属性static实例属性无static• 属于单个对象每个对象独立一份• 创建对象后才分配内存必须通过对象调用Student s1 new Student();s1.name “张三”;Student s2 new Student();s2.name “李四”; // 互不影响静态属性static修饰• 属于类本身所有对象共享同一份• 类加载时就初始化可直接用类名调用Student.school “一中”;Student s1 new Student();Student s2 new Student();// s1.school 和 s2.school 是同一个值四、属性默认初始化值成员变量创建时自动赋默认值局部变量无默认值必须手动赋值才能使用。基本类型• byte/short/int/long0• float/double0.0• booleanfalse• char\u0000空字符引用类型String、自定义类、数组null示例public class Demo { int a; // 默认0 boolean flag; // 默认false String str; // 默认null}五、属性赋值的4种时机执行顺序固定1.默认初始化最先执行分配内存赋默认值2.声明时直接赋值private String name “小明”;3.构造代码块赋值{ age 18;}4.构造方法赋值最后执行覆盖前面的值public Student(){ age 20;}执行顺序默认值 → 声明赋值 → 代码块 → 构造方法六、getter setter 标准写法封装必备属性私有后外部通过方法读写可增加数据校验逻辑。规则1.getterget属性名布尔类型可用 is属性名无参数返回属性值2.setterset属性名有参数无返回值public class Student { // 私有属性 private int age; private boolean isBoy; // age读 public int getAge() { return age; } // age写增加校验 public void setAge(int age) { if(age 0 age 150){ this.age age; }else{ System.out.println(“年龄非法”); } } // boolean属性getter特殊写法 public boolean isBoy() { return isBoy; } public void setBoy(boolean boy) { isBoy boy; }}使用Student s new Student();s.setAge(20);System.out.println(s.getAge());七、final 修饰的属性常量1.实例final属性必须在「声明时 / 构造代码块 / 构造方法」三者之一赋值赋值后不可修改。private final String ID;public Student(String id){ ID id;}2.static final 全局常量类加载时赋值全项目统一命名全大写下划线分隔public static final double PI 3.14159;八、属性相关关键字总结1.private私有化封装2.static静态归属类共享3.final不可修改常量4.this访问当前对象的实例属性区分局部变量重名public void setName(String name){ this.name name;}5.static this 不能共存静态方法/静态代码块不能用this访问实例属性九、常见易错点1.局部变量没有默认值不赋值直接编译报错成员变量有默认值2.static属性不能用this调用实例属性不能在静态方法直接调用3.private属性外部无法直接 .属性名 访问只能get/set4.final属性只能赋值一次不可二次修改5.子类无法直接访问父类private属性只能调用父类get/set十、完整示例代码public class User { // 实例私有属性 private String username; private final String userId; // 静态常量 public static final String COUNTRY “中国”; // 静态共享属性 public static String company; // 构造方法给final属性赋值 public User(String userId) { this.userId userId; } // getter setter public String getUsername() { return username; } public void setUsername(String username) { this.username username; } public String getUserId() { return userId; }}class Test { public static void main(String[] args) { User.company “字节”; User u new User(“001”); u.setUsername(“张三”); System.out.println(u.getUsername()); System.out.println(User.COUNTRY); System.out.println(User.company); }}