构造器是什么

1.构造器,也称构造方法、构造函数。作用是构造出来一个类的实例,确保对象得到初始化。

2.构造器的格式: 权限修饰符 类名(无参/有参){}。

3.根据有无参数,可分为无参构造 和有参构造。

构造器的特性

1.与一般方法名不同的是,构造方法名必须和类名保持一致,并且没有返回值。

2.Java编译器会自动创建无参构造函数,因此在类中,无参构造即使没有,我们也可省略不写。实例化对象时无需赋值。

3.倘若类中已存在有参构造函数,则编译器不再提供默认无参构造。实例化对象时需赋值,不然报错。

4.当类实例化一个对象时会自动调用构造方法。

示例代码一:无参构造

学生类

public class Student {

//权限修饰符是public,表示内部属性能被其他类访问到。若使用private,则需要set/get才能访问

public String name;

public int age;

//无参构造,编译器自带,可不写。

public Student(){

System.out.println("括号内无参数,这就是无参构造");

}

}

测试类

public class Test {

public static void main(String[] args) {

Student st = new Student();//创建对象,括号内无需赋值

//没赋值的情况下,字符类型默认值为null,数值类型默认值为0

System.out.println(st.name+" "+st.age);//null,0

//对属性进行赋值

st.name="Tom猫";

st.age=5;

System.out.println(st.name+"今年"+st.age+"岁了");

}

}

结果

括号内无参数,这就是无参构造

null 0

Tom猫今年5岁了

示例代码二:有参构造

学生类

public class Student {

//权限修饰符是public,表示内部属性能被其他类访问到。若使用private,则需要set/get才能访问

public String name;

public int age;

//无参构造最好也写上

public Student(){

}

public Student(String name,int age){

System.out.println("括号内有参数,就是有参构造");

//将形参变量的值,赋给成员变量。

this.name = name;

this.age = age;

//this.name = "吴邪" 若直接在构造方法内部赋值,则优先执行其内部的值,即吴邪会替掉Tom猫

}

}

测试类

public class Test {

public static void main(String[] args) {

//创建对象。赋值后,定义的值会传递给构造器中的形参变量。

Student st = new Student("Tom猫",5);//创建对象,须在括号内赋值,不然报错

//使用对象调用成员变量(java对象只能调用成员变量)

System.out.println(st.name+"今年 "+st.age+"岁了");

}

}

结果

括号内有参数,就是有参构造

Tom猫今年5岁了

补充

如果你创造了一个带有参数的构造方法,那么无参的构造方法必须显式的写出来,否则会编译失败。这句话该如何理解?

这句话其实有点不妥,应该这么理解:每个类至少要有一个构造函数。如果写了一个有参构造,而没有写无参构造,也是可以的。不过,当你尝试通过一个无参构造来new对象时,编译器会报错。因为找不到这个无参的构造函数。也就是说,当一个类你没有写构造函数时,编译器会自动帮你创建一个无参构造。反之,若是写了有参构造,却想通过无参构造new对象,那么就需要将此无参构造写出来。

java中,子类为什么会自动继承父类的无参构造方法?

其实这句话本身就是错误的。因为构造函数不能继承,只能被调用。 正确的说法应该是,Java中子类会自动调用父类的无参构造方法。那么,子类为什么会自动调用父类的无参构造方法呢?因为子类继承父类,会继承到父类中的数据,所以必须要看父类是如何对自己的数据进行初始化的。所以子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程。子类在继承父类时,如果没有相同的带参构造方法,那么他就需要在其构造方法中,明确的通过super()调用父类的带参构造方法,否则构造不出父类,从而也构造不出他自己了。如果我们在父类中写个不带参数的构造方法,就可以不用实现父类的带参构造方法了。

java 构造器 血药主题_java中的构造器相关推荐

  1. java构造器详解_Java中关于构造器的使用详解

    这篇文章主要介绍了Java构造器使用方法及注意事项的相关资料,这里举例说明如何使用构造器及需要注意的地方,需要的朋友可以参考下 Java构造器使用方法及注意事项 超类的构造器在子类的构造器运行之前运行 ...

  2. java读取xml路径问题_java 中读取xml 和绝对路径

    一.得到绝对路径 本人用到的不多,就列举常用的. 以上2种可读取固定配置文件可用得到绝对路径 1.System.getProperty("user.dir"); 这个东西局限性十分 ...

  3. java boolean几个字节_Java中boolean类型到底占用多少个字节?

    1.时间:2017-07-03 07:37:06YuanMxy 2.问题描述:今天在复习java基础的时候发现一小问题,Java中boolean类型到底占用多少个字节? 3.问题解答: (1)什么是b ...

  4. java 基本类型的引用_Java中的基本数据类型与引用数据类型

    一.基本数据类型 byte.short.int.long(整数类型) float.double(浮点数类型) char(字符型) boolean(布尔类型 ) Java数据大多数存放在堆栈中.栈区:存 ...

  5. java常见的报错_Java中常见的错误有哪些?

    原标题:Java中常见的错误有哪些? 1.java.lang.Error 错误.是所有错误的基类,用于标识严重的程序运行问题.这些问题通常描述一些不应被应用程序捕获的反常情况. 原因: 1.对系统所访 ...

  6. java i 线程不安全_java中的++i是线程安全的吗?

    java中的++i是线程安全的吗?为什么?怎么使它线程安全呢? 先说答案: 非线程安全 先说下为什么是非线程安全的? 从Java内存模型说起 Java内存模型规定了所有的便利都存储在主内存中,每个线程 ...

  7. java原始类型和引用类型_Java中的8种原始类型

    java原始类型和引用类型 几年前,当我开始编辑Java Basics系列时,我认为将一些非常详细的信息拉到自己的帖子中是很有意义的. 这样,初学者的内容就更容易消化了. 首先,我将介绍有关Java的 ...

  8. java如何使截取字符串_java中如何截取字符串中的指定一部分

    java中如何截取字符串中的指定一部分 关注:136  答案:4  mip版 解决时间 2021-02-06 13:27 提问者妳涐執唸汰深 2021-02-06 08:56 精选 比如 F:\wor ...

  9. 随机数在java 自旋锁的运用_Java 中自旋锁的实现

    Java中初始是使用mutex互斥锁,因为互斥锁是会线程等待挂起,而对获取锁后的操作时间比较短暂的应用场景来说,这样的锁会让竞争锁的线程不停的park,unpark 的操作,这样的系统的调用性能是非常 ...

最新文章

  1. LED液晶与OLED:电视显示技术比较
  2. python时区转换_在python 不同时区之间的差值与转换方法
  3. ZooKeeper 源码和实践揭秘
  4. torch_{geometric/scatter}中一些函数的用法(softmax,scatter)
  5. java课程实战培训,终获offer
  6. 【转】C 从函数返回数组
  7. J .U.C 简介-Lock
  8. 程序员考核的五大死因(上)
  9. iOS UIWebView URL拦截
  10. softlayer virtual machine vhd磁盘镜像导入shell脚本
  11. python3的面向对象_python3学习之面向对象
  12. 非关系型数据库--MongoDB
  13. MapReduce实现大矩阵乘法
  14. CV面试题(持续更新!!!)
  15. 大气压力换算公式_常用压力单位换算表
  16. DISCUZ论坛管理员密码破解
  17. web渗透测试----10、信息泄露
  18. 调用Android短信软件进行短信群发
  19. 使用canvas 绘制象棋棋盘
  20. strace分析mysql_使用Strace跟踪oracle读取数据块

热门文章

  1. s5pv210运行裸机程序的方法之在SDRAM(DDR2)中运行
  2. Ansible中文手册
  3. Eclipse集成Tomcat:6个常见的”how to”问题
  4. 6.19docker (三)实战 Rails
  5. Python打包PyPI上传实践
  6. 基本数据类型和引用数据类型作为参数时候的问题
  7. Windows10 JDK9安装及配置环境变量与Eclipse安装
  8. [开源]C#二维码生成解析工具,可添加自定义Logo
  9. java反射 invoke详解
  10. Using POI to replace elements in WORD(.docx/.doc)(使用POI替换word中的特定字符/文字)【改进】...