java中的构造函数

使用构造器时需要记住:

1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)

2.每个类可以有一个以上的构造器

3.构造器可以有0个、1个或1个以上的参数

4.构造器没有返回值,因为构造对象,创建完就结束,需要结果。void也不要写,因为要有区别与一般函数。

5.构造器总是伴随着new操作一起调用

6.多个构造函数是以重载的形式存在的。

需求:为了描述事物更准确,发现事物对应的很多对象一创建时,
就有了,一些初始化的数据。在类中该如何完成的。

通过Java中的另一个小技术完成:就是构造函数。对象本身就是构造出来,
构造时,需要做一些动作这些应该定义在函数内。
构造函数(Constructor)有什么用?可以对对象创建进行初始化。
类中有定义该构造函数吗?有的。只要定义一个类,
该类中默认就有一个空参数的构造函数,是编译器编译时添加到class文件中。
注意:如果在类中自定义了构造函数,那么默认的空参数构造函数编译器就不添加了。
原理:没有定义对象的初始化过程,编译器会添加一个默认的初始化过程。
如果定义了指定的对象初始化过程,默认的就不添加了。

构造函数的细节:
1,一个类中可以有多个构造函数,它们的存在是以重载的形式体现的。
2,构造函数中也是有return语句的,用于结束初始化动作的。
3,构造函数是否能被private修饰呢?能,作用:其他程序无法创建该类的对象。

构造函数和一般函数的区别?
1,写法不一样。不重要。
2,运行上有差别,对象一创建就会调用对应的构造函数。
一般方法是对象创建后,才会调用所需的一般函数。
问:有了构造函数初始化姓名,那么还需要setName方法吗?
需要,因为对象创建后,如果需要对数据进行修改,可以通过set完成。
3,构造函数在对象创建时,仅调用一次(初始化动作只做一次,而且先执行)。一般方法可以被对象调用多次。
示例:
A.java
        public class A{  
      public A(){  
        System.out.println("调用了无参的构造函数");  
    }  
    public A(String mess){  
      System.out.println("调用了有参的构造函数\n"+  
         "参数内容为:"+mess);  
    }  
  }  

Test.java
public class Test{  
   public static void main(String [] args){  
       A a_1=new A();//调用无参的构造函数  
       A a_2=new A("Hello");//调用有参的构造函数  
   }  
}  

输出结果:

继承与构造函数

 

使用super调用父类构造器的语句必须是子类构造器的第一条语句

如果子类构造器没有显式地调用父类的构造器,则将自动调用父类的默认(没有参数)的构造器。如果父类没有不带参数的构造器,并且在子类的构造器中又没有显式地调用父类的构造器,则java编译器将报告错误

示例:

A.java

public class A{  
   public A(){  
      System.out.println("调用了A的无参构造函数");  
   }  
   public A(String mess){  
      System.out.println("调用了A的有参的构造函数\n"+  
         "参数内容为:"+mess);  
   }  
}  


B.java
public class B extends A{  
   public B(){  
      System.out.println("调用了B的无参构造函数");  
   }  
   public B(String mess){  
      super(mess);  
      System.out.println("调用了B的有参构造函数\n"+  
         "参数内容为:"+mess);  
   }  
}  


Test.java
public class Test{  
   public static void main(String [] args){  
       B b_01=new B();  
       B b_02=new B("你好");  
   }  
}  


输出结果:



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值