对象创建与引用

知识点:对象的创建与使用、对象的引用传递、访问控制权限

一、对象的创建与使用

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 对外提供功能入口

本章小结

  1. 对象创建 :new 类名() 创建对象,用 . 访问属性和方法。
  2. 引用传递:对象变量保存地址,多个引用可指向同一对象。
  3. 访问权限 :private、包访问、protected、public,权限从小到大。
  4. 封装常用写法 :属性 private,对外提供 getXxx() 和 setXxx()。
相关推荐
hasty1 小时前
限制写了却没生效:OpenTelemetry Go 的 Unicode 截断边界
开发语言·后端·golang
大侠归来2 小时前
C语言与C++在基础语法上的区别
java·c语言·c++
小宋10212 小时前
SQL + RAG 混合问答实战:结构化指标与文档证据如何统一路由
java·jvm·人工智能·sql
bro_Java6662 小时前
链表进阶2:双向链表的构建
java·数据结构·链表
DianSan_ERP3 小时前
多平台订单自动下载与回传的技术实现:从消息推送到状态闭环引言
java·linux·服务器·前端·网络·架构·自动化
Joe_Wang53 小时前
【从0到1学习JVM · 13】点进JDK源码只有一个分号?搞懂本地方法栈与JNI机制
java·jvm·学习·本地方法栈
编码者卢布3 小时前
【App Service 】WebJobs 多实例实验:谁在运行,什么时候运行?
开发语言·python
kaixin_learn_qt_ing3 小时前
Qt抽屉窗体实现demo
开发语言·qt
quantdash_cc3 小时前
Python 获取实时行情后如何进行批量筛选?从全市场快照到策略候选池
开发语言·python·数据分析·量化交易·股票数据·quantdash