黑马程序员技术交流社区

标题: 关于构造器的问题 [打印本页]

作者: 叶燕希    时间: 2015-5-29 22:32
标题: 关于构造器的问题
JAVA中定义类时一定要定义一个构造器吗?构造器的作用是什么?能给个实例吗
作者: Tangtang    时间: 2015-5-29 22:42
本帖最后由 Tangtang 于 2015-5-29 22:50 编辑

在实例化这个类的时候,有调用这个类的默认构造方法,系统默认构造方法是无参的,所有自己不用写。
在系统中你若是定义了有参的构造方法,那么就要把无参的构造方法显示的写出来了,不然就无法再调用无参的构造方法
简单示例:
public class Test1 {
        //什么都不写系统会有默认的无参构造方法
}


public class Test1 {
        //无参构造方法
        public Test1() {
        }
        //有参构造方法
        public Test1(String name) {
        }
}


作者: 叶燕希    时间: 2015-5-29 22:48
Tangtang 发表于 2015-5-29 22:42
在实例化这个类的时候,有调用这个类的默认构造方法,系统默认构造方法是无参的,所有自己不用写。
在系统 ...

能给个例子说明吗
作者: Animal    时间: 2015-5-29 22:49
在系统中你若是定义了有参的构造方法
作者: jiatengde    时间: 2015-5-29 23:24
新人报道,热血黑马
作者: 李志鹏    时间: 2015-5-30 16:05
  1. class Student{
  2.     int age;
  3.     public Student(){}//这就是默认的构造函数
  4.         public void show(){
  5.                 System.out.println(age);
  6.         }
  7. }
  8. public class Test5 {

  9.         public static void main(String[] args) {

  10.                 Student s = new Student();
  11.                 s.age = 12;
  12.                 s.show();
  13.         }

  14. }
复制代码

作者: bin2015    时间: 2015-5-30 17:28
构造器是给对象进行初始化的,如果没有定义那么java虚拟机会给我们加一个无参的,如果存在继承关系,会先调用父类的无参构造器。
  1. //婴儿类
  2. class Baby{
  3.        
  4.         int id; //成员变量

  5.         String name;
  6.        
  7.         //构造代码块
  8.         {
  9.                 //System.out.println("构造代码块被调用了.....");
  10.                 cry();
  11.         }


  12.         //无参的构造函数
  13.         public Baby(){
  14.                
  15.         }

  16.         //带参构造函数
  17.         public Baby(int i,String n){
  18.                 id = i;
  19.                 name = n;
  20.         }

  21.         public void cry(){
  22.                 System.out.println("哇哇哇..");
  23.         }
  24. }


  25. class Demo4
  26. {
  27.         public static void main(String[] args)
  28.         {
  29.                 Baby b1 = new Baby(110,"狗娃");
  30.                
  31.                 /*
  32.                 Baby b1 = new Baby(); //黑户
  33.                 Baby b2 = new Baby(110,"狗娃"); //白户
  34.                 //System.out.println("Hello World!");
  35.                 */
  36.         }       
  37. }
复制代码

作者: zhousuo28    时间: 2015-5-30 18:18
可以不写,但是JVM会默认给你加上一个空参的构造器
作者: 战狼1991    时间: 2015-5-30 18:18
好!不错……:victory:
作者: 绝版坏银    时间: 2015-5-30 18:52
学习学习。。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2