首页 > 编程语言 >Java 构造函数与修饰符详解:初始化对象与控制权限

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

时间:2024-02-22 22:01:43浏览次数:48  
标签:Java 修饰符 创建对象 访问 Main public 构造函数

Java 构造函数

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

构造函数的作用:

  • 为对象的属性设置初始值
  • 执行必要的初始化操作
  • 提供创建对象的多种方式

构造函数的类型:

  • 默认构造函数: 无参数的构造函数,如果用户没有明确定义构造函数,则 Java 编译器会自动创建一个默认构造函数。
  • 带参数的构造函数: 可以为构造函数添加参数,以便在创建对象时传入初始值。

示例:

public class Main {
  int x;

  // 默认构造函数
  public Main() {
    x = 5;
  }

  // 带参数的构造函数
  public Main(int y) {
    x = y;
  }

  public static void main(String[] args) {
    Main myObj1 = new Main(); // 调用默认构造函数
    System.out.println(myObj1.x); // 输出 5

    Main myObj2 = new Main(10); // 调用带参数的构造函数
    System.out.println(myObj2.x); // 输出 10
  }
}

构造函数的注意事项:

  • 构造函数不能被重写。
  • 构造函数不能被声明为 abstract 或 final。
  • 构造函数可以抛出异常。

一些额外的说明:

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

    • 打开数据库连接
    • 加载配置文件
    • 注册事件监听器
  • 可以使用多个构造函数来提供创建对象的多种方式,例如:

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

Java 修饰符

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

  1. 访问修饰符:
  • public: 意味着代码对所有类可访问。
  • private: 意味着代码只能在声明的类内部访问。
  • default: 意味着代码只能在同一包中访问。
  • protected: 意味着代码在同一包和子类中可访问。
  1. 非访问修饰符:
  • final: 意味着类不能被继承,属性和方法不能被重写。
  • static: 意味着属性和方法属于类,而不属于对象。
  • abstract: 意味着类不能用于创建对象,方法没有主体,必须由子类提供。
  • transient: 意味着在序列化包含它们的对象时,属性和方法将被跳过。
  • synchronized: 意味着方法一次只能由一个线程访问。
  • volatile: 意味着属性的值不会在本地线程缓存,总是从“主内存”读取。

示例:

访问修饰符:

// public类可以被任何类访问
public class Main {

  // private属性只能在 Main 类内部访问
  private int x = 10;

  // default方法只能在同一个包中访问
  void myMethod() {
    System.out.println("This is a default method.");
  }

  // protected方法可以在同一个包和子类中访问
  protected void myProtectedMethod() {
    System.out.println("This is a protected method.");
  }

  public static void main(String[] args) {
    Main myObj = new Main();
    System.out.println(myObj.x); // 错误,无法访问私有属性
    myObj.myMethod(); // 可以访问 default 方法
    myObj.myProtectedMethod(); // 可以访问 protected 方法
  }
}

非访问修饰符:

public class Main {

  // final属性不能被修改
  final int y = 20;

  // static方法可以在不创建对象的情况下访问
  static void myStaticMethod() {
    System.out.println("This is a static method.");
  }

  // abstract方法没有主体,必须由子类提供
  abstract void myAbstractMethod();

  public static void main(String[] args) {
    // y = 30; // 错误,无法修改 final 属性
    myStaticMethod(); // 可以访问 static 方法
    // myAbstractMethod(); // 错误,无法直接调用抽象方法
  }
}

// 子类继承 Main 类并提供抽象方法的主体
class Child extends Main {

  @Override
  void myAbstractMethod() {
    System.out.println("This is the implementation of myAbstractMethod.");
  }
}

一些额外的说明:

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

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

标签:Java,修饰符,创建对象,访问,Main,public,构造函数
From: https://www.cnblogs.com/xiaowange/p/18028316

相关文章

  • Java基础03:数据类型讲解
    1.数据类型1.1强类型语言1.1.1要求变得使用要严格符合规定,所有变量都必须先定义后才能使用1.2弱类型语音1.2.1要求变得使用要符合规定,所有变量都必须先定义后才能使用1.3Java的数据类型分为两大类1.3.1基本类型(primitivetype):......
  • JavaScript
    JavaScriptJavaScript(简称JS)是一种用于网页交互的脚本语言,通常用于在网页上添加动态功能、交互性和响应式设计。它是一种基于对象和事件驱动的脚本语言,由Netscape公司(现在属于Mozilla公司)在1995年首次引入,最初被设计为在客户端执行。(1)varlet变量关键字varvarname......
  • Java基础02:标识符和关键字
    1.标识符1.1关键字 Java所有组成的部分都需要名字。类名、变量名以及方法名都被称为标识符。1.2标识符注意点1.2.1所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始1.2.2首字符之后可以是字母(A-Z或者a-z),美元符($)、或者......
  • 引入JavaScript自定义提示信息(账户密码不为空,必须勾选用户协议)
     当不输入用户或密码就登录时不勾选用户协议就登录时form表单的修改,引入了onsubmit控件,提交表单时,调用validateForm函数<formaction="/home"method="post"onsubmit="returnvalidateForm()">validateForm函数内容functionvalidateForm(){//验证用户名和密......
  • java.sql.SQLException: Connection is read-only. Queries leading to data modifica
    java.sql.SQLException:Connectionisread-only.Queriesleadingtodatamodificationarenot产生的原因:事务中查询的方法中,嵌套了新增或修改的方法,会报该异常。解决方法:找到报错的方法,在该方法上加上注解,@Transactional(readOnly=false)业务上加了事务控制,意思是只能查......
  • Java异常处理的20个最佳实践:告别系统崩溃
    引言在Java编程中,异常处理是一个至关重要的环节,它不仅涉及到程序的稳定性和安全性,还关系到用户体验和系统资源的合理利用。合理的异常处理能够使得程序在面对不可预知错误时,能够优雅地恢复或者给出明确的反馈,而不是简单地崩溃退出。文章开始前,我们先看下思维导图熟悉下有哪些异......
  • 对复杂Java POJO 字段赋值
    背景上周遇到了一个安全需求,要求外部接口不能返回手机号字段。难点在于,外部接口和内部接口调用的是同一个方法,所以只能在接口返回的地方做处理逻辑。当时为了快速上线,用的办法是把手机号字段取出,置为null,然后再set回去。因为接口返回的POJO比较复杂,嵌套层级多,所以这个办法不优雅......
  • java
    一、jvm参数-Xms:堆内存的初始大小,默认为物理内存的1/64-Xmx:堆内存的最大大小,默认为物理内存的1/4-Xmn:堆内新生代(新生成的对象)的大小。通过这个值也可以得到老生代的大小,即-Xmx减去-Xmn-Xss:设置每个线程可使用的内存大小,即栈的大小。在相同物理内存下,减小这个值能生成更多的......
  • java 如何生成doc文档
    cmd命令行:javadoc-encodingUTF-8-charsetUTF-8Doc.java或者在idea中下载差价javaDoc插件,来进行尝试,下载方法如下:如何使用详细教程可以面向百度......
  • Java和LWJGL的关于OpenAL的文章
    一、OpenAL的原理和基本概念:1.1OpenAL的架构OpenAL的架构同样基于三个核心组件:Context(上下文)、Source(声源)和Buffer(缓冲区)。Context代表了音频处理的环境,Source是具体的音频播放源,而Buffer则用于存储音频数据。1.2音频渲染流程OpenAL处理音频的流程包括将音频数据从Buffer传......