知识点:对象的创建与使用、对象的引用传递、访问控制权限
一、对象的创建与使用
1.1 创建对象
Java 中使用 new 关键字创建对象。
格式:
类名 对象名 = new 类名();
示例:
public class Student {
String name;
int age;
public void introduce() {
System.out.println("我叫" + name + ",今年" + age + "岁");
}
}
public class TestStudent {
public static void main(String[] args) {
// 创建对象
Student s1 = new Student();
}
}
1.2 给属性赋值
使用 . 访问对象属性。
格式:
对象名.属性名 = 值;
示例:
s1.name = "张三";
s1.age = 18;
1.3 调用对象方法
格式:
对象名.方法名();
示例:
s1.introduce();
1.4 完整示例
public class Student {
String name;
int age;
public void introduce() {
System.out.println("我叫" + name + ",今年" + age + "岁");
}
}
public class TestStudent {
public static void main(String[] args) {
Student s1 = new Student();
s1.name = "张三";
s1.age = 18;
s1.introduce();
}
}
输出:
我叫张三,今年18岁
二、对象的引用传递
2.1 引用类型的理解
Java 中,类、数组、接口等都是引用类型。
用类创建出来的对象变量,保存的不是对象本身,而是对象的地址 / 引用。
Student s1 = new Student();
可以简单理解为:
new Student():在堆内存中创建对象;s1:保存对象的地址,通过地址找到对象。
2.2 引用传递示例
public class Student {
String name;
int age;
}
public class TestReference {
public static void main(String[] args) {
Student s1 = new Student();
s1.name = "张三";
s1.age = 18;
Student s2 = s1;
s2.name = "李四";
System.out.println(s1.name); // 李四
}
}
输出结果:
李四
原因:
s2 = s1把引用地址复制给了s2,两个变量指向同一对象。
2.3 方法中的引用传递
public class Student {
String name;
int age;
}
public class TestReference2 {
public static void main(String[] args) {
Student s = new Student();
s.name = "王五";
changeName(s);
System.out(s.name); // 赵六
}
public static void changeName(Student stu) {
stu.name = "赵六";
}
}
注意:引用传递中,方法改变的是对象属性,不是外部变量本身的地址。
三、访问控制权限
Java 提供访问修饰符来控制类、属性和方法的访问权限。
3.1 四种权限
| 权限 | 含义 | 说明 |
|---|---|---|
public |
公共的 | 任何地方都能访问 |
protected |
受保护的 | 同包、子类可以访问 |
| 不写 / 空 | 包访问权限 | 同包可以访问 |
private |
私有的 | 只能在本类内部访问 |
3.2 权限从小到大
private < 不写 < protected < public
3.3 示例
public class Student {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public class TestPermission {
public static void main(String[] args) {
Student s = new Student();
s.setName("张三");
System.out.println(s.getName());
// s.name = "李四"; // 错误:private不能直接访问
}
}
3.4 类、属性、方法使用权限的建议
| 成员 | 建议权限 | 理由 |
|---|---|---|
| 类 | public |
方便其他类使用 |
| 属性 | private |
封装数据,避免直接修改 |
| 方法 | public |
对外提供功能入口 |
本章小结
- 对象创建 :
new 类名()创建对象,用.访问属性和方法。 - 引用传递:对象变量保存地址,多个引用可指向同一对象。
- 访问权限 :
private、包访问、protected、public,权限从小到大。 - 封装常用写法 :属性
private,对外提供getXxx()和setXxx()。