-
2021-02-12 17:05:25
构造方法当中,主要有无参构造方法以及有参构造方法两种,下面的话就一起来看看详细代码示例吧。public class MyClass
{
private int m; // 定义私有变量
MyClass()
{
// 定义无参的构造方法
m = 0;
}
MyClass(int m)
{
// 定义有参的构造方法
this.m = m;
}
}
这个实例定义了两种构造方法,分别是无参构造方法和有参构造方法。
在一个类当中,定义多个具有不同参数的同名方法,这个就是方法重载。
这两个构造方法的名称都和类名相同,都是MyClass,在实例化这个类的时候能够调用不同的构造方法进行初始化。
注意一下了,类的构造方法不是要求必须定义的,假如,在类当中没有定义任何的一个构造方法,那么java会自动为这个类生成一个默认的构造方法,默认的构造方法不包含任何参数,并且,方法体为空。
假如,类当中显式的定义了一个或者是多个构造方法,那么java将不再提供默认构造方法。
注意一下,无参数的构造方法也被叫做Nullary构造方法。
只有编译程序自动加入的构造方法,才被叫做是默认构造函数。
假如自行编写无参数、没有内容的构造函数,就不称为默认构造函数了(只是 Nullary 构造函数)。
虽然只是名词定义,但是在进行认证考试的时候还是要区别一下这两个的不同之处。
以上的内容就给你分享到这里了,更多java实例内容,请继续来奇Q工具网进行了解吧。
推荐阅读:
更多相关内容 -
无参构造方法的作用
2021-01-08 11:22:332.无参构造方法可以去除,JAVA会给每个类一个默认的无参构造方法;当一个类中若存在有参构造方法,若想再使用无参的构造方法,就必须写出无参构造方法。 在类中若存在有参构造方法时,最好加上一个无参构造方法。 3.... -
Java无参构造方法的作用
2021-02-12 17:05:26classPerson{...//表示人的年龄publicvoidtell(){//定义说话的方法System.out.println("姓名:"+this.getName()+",年龄:"+this.getAge...class Person{private String name;// 表示人的姓名private int...classPerson{privateStringname;//表示人的姓名privateintage;//表示人的年龄publicvoidtell(){//定义说话的方法System.out.println("姓名:"+this.getName()+",年龄:"+this.getAge...
class Person{
private String name;// 表示人的姓名
private int age ;// 表示人的年龄
public void tell(){// 定义说话的方法
System.out.println("姓名:" + this.getName() + ",年龄:" + this.getAge()) ;
}
public Person(){
System.out.println("########");
}
public void setName(String n){
name = n ;
}
public void setAge(int a){
if(a>=0&&a<=200){
age = a ;
}
}
public String getName(){
return name ;
}
public int getAge(){
return age ;
}
};
public class OODemo10{
public static void main(String args[]){
Person per = new Person() ;// 实例化对象
System.out.println(per.getName());
System.out.println(per.getAge());
}
};
随便拷贝了一个代码
问题:我知道结果会输出
########
null
0
我们说构造方法的主要目的是为类中的属性初始化的,那无参构造方法的目的是不是也是这样,那么上面代码中的无参构造具体是怎么为类中的属性初始化的,我知道在使用new关键字的时候才会调用构造方法。但是上面代码中的null和0应该是在定义name和age属性时就产生了的。还有假如没有定义构造方法会自动生成一个无参构造,为什么要自动生成无参构造呢,还有无参构造的方法体是不是像上面那样打印###可以随便写
展开
-
Java的无参构造函数用法实例分析
2020-08-25 15:11:20主要介绍了Java的无参构造函数用法,结合实例形式分析了java无参构造函数基本原理、用法及相关操作注意事项,需要的朋友可以参考下 -
Java有参构造方法和无参构造方法详解
2020-12-09 12:05:16一:有参数构造方法 在之前我们要为一个对象赋值,先要创建好对象之后然后“对象名.属性名”或者调用属性的setter为属性赋值。但是在很多时候觉得这样做很麻烦,最好的做法是在创建对象的时候完成属性的初始化操作...一:有参数构造方法
在之前我们要为一个对象赋值,先要创建好对象之后然后“对象名.属性名”或者调用属性的setter为属性赋值。但是在很多时候觉得这样做很麻烦,最好的做法是在创建对象的时候完成属性的初始化操作,此时需要使用到有参数构造方法方能完成该功能(有人把构造方法叫做构造器)。
DEMO:定义有参数构造方法
上面定义了四个有参数构造方法,发现了构造方法可以重载,
书写的习惯是重载的构造方法按照参数的个数进行升序排序。但是如何去调用有参数的构造方法呢?
DEMO:调用有参数构造方法
此时发现了我们不需要像之前一样,要为对象的属性赋值就必须先创建对象再使用“对象名.属性名”或者使用setter 方法去实现了,而是直接使用有参数的构造方法去实现。
DEMO:继续观察代码
此时提示“这个无参数构造Student()方法未定义”,在之前我们说了JVM会默,认为类提供无参数构造方法,但是这只能是在没有任何有参构造方法的条件下,现在我们定义了四个有参数构造方法(JVM认为你不需要无参数构造方法了),所以JVM不再提供无参数的构造的构造方法了。
所以我们定义 了有参数构造方法那么也需要显示的定义出无参数构造方法。
DEMO:显示定义无参数构造方法
总结:
1、构造方法的出现是为了方便为对象的属性初始化值
2、一般在类中构造方法的顺序都是按照参数的个数去升序排序的
3、如果定义了有参构造方法那么JVM就不会在提供无参数构造了,所以如果我们定义了有参构造那么无参构造也要显示的定义出来。
二:Java无参构造方法
一:构造方法给的概念
在之前我们使用过方法,在调用的方法的是时候需要在方法名称之后加.上小括号,括号里面可以传递实参,那么我们在创建一个对象的时候使用的是“new类名()”的方式去实现,其实上这也是一种方法,但是这个方法我们没有明确的去定义,那为什么可以调用呢?观察代码。
DEMO:观察代码
以上的代码在创建的对象的时候使用“Student()”,发现了在“Student”之后使用小括号,这和方法的调用很相似,其实“Student()”就是-一个方法,是一个特殊的方法-构造方法,发现了构造方法的名称和类名一样,而且一定是在new关键字之后调用的。但是我们没有在Student类中看到这个方法依然能够调用,原因是JVM(Java的虚拟机,暂时不用管,你就认为是系统,后面我们讲解JVM内存模型的时候会分析)系统默认为该类提供了无参数构造方法,所以我们才能调用。
我们也可以显示的将该方法定义出来。
DEMO:显示的定 义构造方法
此时我们显示的定义了一个五参数构造方法,构造方法是在什么时候调用的呢?如何很明显的看出调用了构造方法?
DEMO:观察构造方法调用的时机
总结:
1、构造方法的概念(构造方法的出现是为了在实例化对象的时候可以为对象的属性初始化值)。
2、默认jvm会为每个类提供一个无参数构造方法。
3、构造方法的特征和它与普通方法的区别你要清楚。
学习不要走马观花的学,每个知识重点大纲,就是学习路线都是根据每一天市场上多数公司用到的新技术整理,在学习的时候还需要结合练习题来做这里的话我也将我之前在学习过程中用到的一些学习资料整理成了文档,以及我自身之前的一个面试文案和知识点补充,有需要的朋友可以加我的QQ群 697888503 ,这里也希望大家最终都能够学有所成,学习编程不是一天两天的功夫,勤能补拙才是硬道理,祝大家最终都能成为一名合适开发攻城狮。
-
Java有参构造方法和无参构造方法
2021-02-12 17:05:28(如果自己添加构造函数,无论有参数或是没参数,默认构造函数都将无效)编写时添加了有参构造方法而未添加无参构造方法,那么编译器只认有参构造方法而不会默认添加无参构造方法!如果需要使用无参构造方法,一定要在...1、定义:
编写一个类时没有添加无参构造方法,那么编译器会自动添加无参构造方法;(如果自己添加构造函数,无论有参数或是没参数,默认构造函数都将无效)
编写时添加了有参构造方法而未添加无参构造方法,那么编译器只认有参构造方法而不会默认添加无参构造方法!
如果需要使用无参构造方法,一定要在类里面添加
2、举例:
定义四个类(说明四种情况):
类Person1 自己不手动添加任何无参或有参数构造方法 (实例化对象时:编译通过)
类Person2 自己添加无参的构造方法 (实例化对象时:编译通过)
类Person3 有参数的构造方法 (实例化对象时:不通过)
类Person4 自己添加无参的构造方法,和有参数的构造方法 (实例化对象时:编译通过)
//定义类Person1 自己不手动添加任何无参或有参数构造方法
class Person1{
private int age;
private String name;
private String sex;
}
//定义类Person2 自己添加无参的构造方法
class Person2{
private int age;
private String name;
private String sex;
public Person2(){
System.out.println("无参构造方法被调用");
}
}
//定义类Person3 有参数的构造方法
class Person3{
private int age;
private String name;
private String sex;
public Person3(String name, String sex, int age ){
this.name = name;
this.sex = sex;
this.age = age;
}
}
//定义类Person4 自己添加无参的构造方法,和有参数的构造方法
class Person4{
private int age;
private String name;
private String sex;
//不带参数的构造函数,可以被重载
public Person4(){
System.out.println("无参构造方法被调用");
}
//带参数对的构造函数
public Person4(String name, String sex, int age ){
this.name = name;
this.sex = sex;
this.age = age;
}
}
public class ObjectInit_2 {
public static void main(String[] args) {
Person1 person1 = new Person1();//编译通过;①实例化Person对象 ②自动调用构造方法Person( )
Person2 person2 = new Person2();//编译通过;打印: 无参构造方法被调用
// 这样写,编译器会报错,原因是系统默认的无参构造方法被有参构造方法覆盖,编译器不能再提供无参构造方法
Person3 person3 = new Person3();
//Person4 person4 = new Person4();//编译通过;打印: 无参构造方法被调用
Person4 person4 = new Person4("qzz", "man", 18);//编译通过;
}
}
3.使用构造器时需要记住:
1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)
2.每个类可以有一个以上的构造器
3.构造器可以有0个、1个或1个以上的参数
4.构造器没有返回值
5.构造器总是伴随着new操作一起调用
父类有有参构造方法有两种情况,一只有有参构造,那么子类的构造方法中的第一句必须调用父类的有参构造方法,也就是“super(....);”,....为你传入的参数如:
class Father {
public Father(String lastname) {
}
}
class Son extends Father {
public Son() {
super("aaaa");// 这句必须有
// 可以写其他代码
}
}
二有有参也有无参构造方法,这时子类不显示调用super,这会默认自动调用父类无参的构造方法,
class Father {
public Father() {
}
public Father(String lastname) {
}
}
class Son extends Father {
public Son() {
super();// 这句可以有也可以没有,没有写的话会自动调用
// 可以写其他代码
}
}
-
Java中如何在无参构造方法中调用有参构造?
2021-02-28 08:50:22当然你要无参调用的参的也可以。你用无参,调用有参的。那你有参的参数你需要怎么传呢。当然如果换一个角度也可以。我手写下。没经过IDE的。提供下思路。我有两种思路,写同一个功能。public class Person{privat... -
java构造方法:有参构造方法和无参构造方法区别
2019-05-02 11:02:28java构造方法:有参构造方法和无参构造方法 一、无参构造方法 1、定义: 如果编写一个javaBean时没有添加无参构造方法,那么编译器会自动添加无参构造方法; 但是如果编写时添加了有参构造方法而未添加无参... -
Java无参构造和有参构造的区别
2021-01-16 21:53:56Java无参构造和有参构造的区别欢迎使用Markdown编辑器 欢迎使用Markdown编辑器 有无参数构造函数具体区别在main函数中,有参构造可以在new 类名()这个括号中进行传参书写,无参的只能如上一个一样,分别set传参。 .... -
Java中的有参构造和无参构造
2021-07-20 08:17:03无参构造方法和有参构造方法: 参构造方法要结合get xxx()方法和set xxx()方法使用 例如以创建一个学生类,该学生的属性(成员变量)有姓名,性别,年龄;行为是吃,睡觉,学习 无参构造方法 class Student{ private ... -
java中构造方法的理解,super()与构造方法,无参,有参构造方法,this()与构造方法。
2019-01-08 23:07:18一、为什么要引入构造方法。 当创建对象的时候需要对属性值初始化,构造方法,即对象创建时要执行的方法。 要求在实例化的同时,就指定好name,和age的值。这就要用到构造方法。又叫做构造器Constructor. 二、构造... -
java–一个类中可以定义多个无参构造函数
2020-12-20 22:55:53我当是在想应该不行的吧,然后看到那个问问题的同学说:“可以再定义局部类的空参构造方法”,然后自己看了一下关于局部类的知识确实阔以,话不多说,上代码。 package e01; public class jvav { public static ... -
为什么java会默认提供无参构造方法
2019-09-25 14:54:37小话题:大神勿喷众所周知,如果一个类中没有为其定义构造方法,那么它会默认提供一个无参构造方法,而你定义了有参构造方法以后,无参构造方法就没了?//定义一个Car类publ... -
Java中如何在无参构造方法中调用有参构造方法
2016-08-10 14:27:14参数的扩展和构造方法的调用都是有一定的规律的。 有参调无参,多参调少参。。扩展参数的时候,最好保持原来的顺序。除非为了实现特殊的功能效果(个人以为主要是练基本功使用) 无参调有参需要传实参!!package ... -
Java中有参构造方法的作用和无参构造方法的作用
2019-06-26 16:22:25Java无参构造方法的作用 class Person{ private String name;// 表示人的姓名 private int age ;// 表示人的年龄 public void tell(){// 定义说话的方法 System.out.println("姓名:" + this.getName() + ",年龄:... -
Java的无参构造函数
2019-06-01 14:29:09一点睛 1 如果一个类没有定义任何构造函数,那么该类会自动生成1个默认的构造函数。默认构造函数没有参数。...二使用无参构造函数的错误 1代码 public class ConstructWithNoPara { public stati... -
Java中的有参无参构造方法与继承的关系
2017-10-09 22:11:28public class Father { //年龄 private int age;... //仅有一个带参数的构造方法 public Father (int i){ this.age = i; System.out.println("实例化父类 ag = " + age); } public Father -
java有参构造和无参构造
2021-12-25 16:00:291.如果没有重写有参构造,无参构造可以不写出来,其它类里面也可以调用无参构造。 2.如果写了有参构造,其它类想要调用无参构造,必须显示的写出来 -
[Java基础]-- 有参构造方法和无参构造方法
2016-03-03 15:06:44java构造方法:有参构造方法和无参构造方法 一、无参构造方法 1、定义: 如果编写一个javaBean时没有添加无参构造方法,那么编译器会自动添加无参构造方法; 但是如果编写时添加了有参构造方法而未添加无参... -
JAVA基础——构造函数方法总结(有参构造和无参构造)
2021-04-17 08:26:11使用构造器时需要记住:...构造器总是伴随着new操作一起调用构造方法: 语法public 类名(){} (构造方法没有返回值, 构造方法:一般用于给对象赋初始值)解决:参数名和 属性名 相同修改参数名(不推荐)使用this关键字... -
java有参构造和无参构造的区别
2020-09-12 11:45:46Student(){} 无参构造方法 Student(String name,Integer age){} 有参构造方法 **构造方法作用:**用来初始化java类。提供类的初始化和实例化,方便调用 new一个对象的时候,会调用构造函数 Student student=new ...