Java 构造函数与修饰符详解:初始化对象与控制权限

打印 上一主题 下一主题

主题 879|帖子 879|积分 2637

Java 构造函数

Java 构造函数 是一种特殊的类方法,用于在创建对象时初始化对象的属性。它与类名相同,并且没有返回值类型。
构造函数的作用:

  • 为对象的属性设置初始值
  • 执行必要的初始化操作
  • 提供创建对象的多种方式
构造函数的类型:

  • 默认构造函数: 无参数的构造函数,如果用户没有明确定义构造函数,则 Java 编译器会自动创建一个默认构造函数。
  • 带参数的构造函数: 可以为构造函数添加参数,以便在创建对象时传入初始值。
示例:
  1. public class Main {
  2.   int x;
  3.   // 默认构造函数
  4.   public Main() {
  5.     x = 5;
  6.   }
  7.   // 带参数的构造函数
  8.   public Main(int y) {
  9.     x = y;
  10.   }
  11.   public static void main(String[] args) {
  12.     Main myObj1 = new Main(); // 调用默认构造函数
  13.     System.out.println(myObj1.x); // 输出 5
  14.     Main myObj2 = new Main(10); // 调用带参数的构造函数
  15.     System.out.println(myObj2.x); // 输出 10
  16.   }
  17. }
复制代码
构造函数的注意事项:

  • 构造函数不能被重写。
  • 构造函数不能被声明为 abstract 或 final。
  • 构造函数可以抛出异常。
一些额外的说明:

  • 可以使用构造函数来执行对象的初始化操作,例如:

    • 打开数据库连接
    • 加载配置文件
    • 注册事件监听器

  • 可以使用多个构造函数来提供创建对象的多种方式,例如:

    • 使用默认值创建对象
    • 使用参数创建对象
    • 使用克隆创建对象

Java 修饰符

Java 修饰符 用于控制类、属性、方法和构造函数的访问权限和行为。它们可以分为两组:

  • 访问修饰符:


  • public: 意味着代码对所有类可访问。
  • private: 意味着代码只能在声明的类内部访问。
  • default: 意味着代码只能在同一包中访问。
  • protected: 意味着代码在同一包和子类中可访问。

  • 非访问修饰符:


  • final: 意味着类不能被继承,属性和方法不能被重写。
  • static: 意味着属性和方法属于类,而不属于对象。
  • abstract: 意味着类不能用于创建对象,方法没有主体,必须由子类提供。
  • transient: 意味着在序列化包含它们的对象时,属性和方法将被跳过。
  • synchronized: 意味着方法一次只能由一个线程访问。
  • volatile: 意味着属性的值不会在本地线程缓存,总是从“主内存”读取。
示例:
访问修饰符:
  1. // public类可以被任何类访问
  2. public class Main {
  3.   // private属性只能在 Main 类内部访问
  4.   private int x = 10;
  5.   // default方法只能在同一个包中访问
  6.   void myMethod() {
  7.     System.out.println("This is a default method.");
  8.   }
  9.   // protected方法可以在同一个包和子类中访问
  10.   protected void myProtectedMethod() {
  11.     System.out.println("This is a protected method.");
  12.   }
  13.   public static void main(String[] args) {
  14.     Main myObj = new Main();
  15.     System.out.println(myObj.x); // 错误,无法访问私有属性
  16.     myObj.myMethod(); // 可以访问 default 方法
  17.     myObj.myProtectedMethod(); // 可以访问 protected 方法
  18.   }
  19. }
复制代码
非访问修饰符:
  1. public class Main {
  2.   // final属性不能被修改
  3.   final int y = 20;
  4.   // static方法可以在不创建对象的情况下访问
  5.   static void myStaticMethod() {
  6.     System.out.println("This is a static method.");
  7.   }
  8.   // abstract方法没有主体,必须由子类提供
  9.   abstract void myAbstractMethod();
  10.   public static void main(String[] args) {
  11.     // y = 30; // 错误,无法修改 final 属性
  12.     myStaticMethod(); // 可以访问 static 方法
  13.     // myAbstractMethod(); // 错误,无法直接调用抽象方法
  14.   }
  15. }
  16. // 子类继承 Main 类并提供抽象方法的主体
  17. class Child extends Main {
  18.   @Override
  19.   void myAbstractMethod() {
  20.     System.out.println("This is the implementation of myAbstractMethod.");
  21.   }
  22. }
复制代码
一些额外的说明:

  • 可以使用多个修饰符来修饰类、属性、方法和构造函数。例如,public final 表示类是公开的并且不能被继承。
  • 修饰符是 Java 语言的重要组成部分,它们可以帮助您控制代码的访问权限和行为。
最后

为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

半亩花草

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表