A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马老兵 中级黑马   /  2012-4-1 13:46  /  4281 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在一个类里是不是一定存在一个不带任何参数的构造函数???不带参数的构造函数是不是为了类的初始化而存在的?还有为什么一个类里会重载好多个带有不同参数的构造函数???

15 个回复

正序浏览
本帖最后由 彭威 于 2012-4-4 11:00 编辑

1:一个类中不一定必须带构造函数的,分配到内存中系统有个自动默认的参数,如int型属性默认的是0,而自符默认的null等;
2:定义的空构造函数是可以的,对对象进行初始化的;
3而一个类中出现多个重载的构造函数,是指要求对不同的对象间进行初始化;如
第一个 person p1=new person()
           person p2=new person(“jim”)
           person p3=new person(“lei”,10);
指给3个对象进行了不同的初始化;每个对用初始化时调用的是相应的构造函数的;
  
回复 使用道具 举报
liuhao411 发表于 2012-4-4 10:18
张老师的网上也有的,也是基础的。

发个链接过来 呗。  我找找。
回复 使用道具 举报
耿世玉 发表于 2012-4-4 10:00
哎。。我只有毕老师的视频啊。你还有张老师的视频么?我说的是基础的。
...

张老师的网上也有的,也是基础的。
回复 使用道具 举报
当我们重载一个类的构造函数。。。通常会给他一个空参数的构造函数。。。不然当类继承时会你在子类的构造函数中的第一句就必须制定一个父类的带参数的。。。。
回复 使用道具 举报
liuhao411 发表于 2012-4-2 23:51
你这个问题我当初也遇到了,我建议你回去在好好的看看这个相关的视频,最好看四遍。或是结合张孝祥老师在一 ...

哎。。我只有毕老师的视频啊。你还有张老师的视频么?我说的是基础的。
回复 使用道具 举报
类一创建就会有一个默认的空参构造函数,是系统自动添加的,它是为是为了类的初始化而存在的。
1 对象一创建就会执行对应的构造函数
2 是对应对象进行初始化的,叫做对象以建立时明确要做什么事情
3 对象创建时,只调用一次,初始化动作最先执行,只执行一次

分析具体事务时,该事务已存在,就应该具备一些属性,或者行为,那么就可以将这些定义在构造函数中。
在分析每个事物都不一样,有多种事物存在,类里会多个带有不同参数的构造函数,就会重载。

回复 使用道具 举报
在一个类里是不是一定存在一个不带任何参数的构造函数???
    如果一个类中没有定义任何的构造方法, 虚拟机会自动分配一个无参的构造方法, 里面没有任何的代码
    但凡在类中定义了一个构造方法,虚拟机就不自动分配了, 习惯性地,我们会再自定义一个无参的,避免出错
不带参数的构造函数是不是为了类的初始化而存在的?
    是的,因为构造函数的本质就是为了类的初始化!
还有为什么一个类里会重载好多个带有不同参数的构造函数???
    关于这方面我个人的理解是:为了能更方便的为类类型变量里的成员变量赋值,同时能更好的简化代码
     看下面例子就知道了:
       public class Demo {
        public static void main(String[] args) {
                //无参构造函数
                Person p = new Person();
                p.setAge(10);
                p.setName("zhangsan");
                System.out.println(p.getAge()+"..."+p.getName());
                //有参构造函数
                Person1 p1 = new Person(10,"zhangsan");
                System.out.println(p1.getAge()+"..."+p1.getName());
        }
        }
        class Person {
        private int age;
        private String name;
        Person(){
               
        };
        Person(int age,String name){
                this.age = age;
                this.name = name;
        }
        public void setAge(int age) {
                this.age = age;
        }
        public void setName(String name) {
                this.name = name;
        }
        public int getAge() {
                return age;
        }
        public String getName() {
                return name;
        }
        }
        class Person1 {
        Person1(int age,String name){
                this.age = age;
                this.name = name;
        }
        public int getAge() {
                return age;
        }
        public String getName() {
                return name;
        }
         }
回复 使用道具 举报
你这个问题我当初也遇到了,我建议你回去在好好的看看这个相关的视频,最好看四遍。或是结合张孝祥老师在一起看看,你肯定会明白的。我也是刚理解到的。
回复 使用道具 举报
在一个类里是不是一定存在一个不带任何参数的构造函数?
不一定。javabean里要写一个空参构造函数方便反射使用。javabean就是一个有特殊规则的类,为了建立数据模型而存在。

不带参数的构造函数是不是为了类的初始化而存在的?
构造函数就是为了初始化类的。不带参数的构造函数当然也可以对进行类初始化。

还有为什么一个类里会重载好多个带有不同参数的构造函数?
API里大多数类都有不止一个构造函数,这些构造函数都带有不同的参数。
回复 使用道具 举报
愈看愈迷糊了。我在去看看视频去。。。{:soso_e130:}
回复 使用道具 举报
构造函数:1.函数名与类名相同                2.不用定义返回值类型!
        不可以写return语句
        作用:给对象进行初始化的!
        (当用户没有定义构造函数时,系统自动生成一个空参数的构造函数)。
        基本格式是:        类名(){}
        对象一建立,构造函数只运行一次
什么时候定义构造函数:
        当在分析事物时,该事物存在一些特性或者行为,那将这些内容定义在构造函数中
构造函数的重载:为了实现不同的功能!
回复 使用道具 举报
在一个类里是不是一定存在一个不带任何参数的构造函数???
答:不一定,如果一个构造函数也没有,就存在一个默认的不带任何参数的构造函数,如果自己定义了带参数的构造函数而没有定义不带任何参数的构造函数,就不存在不带任何参数的构造函数。
简单的说:自己定义了构造函数,系统就不给定义默认的不带任何参数的构造函数。如果需要就要自行定义不带任何参数的构造函数
不带参数的构造函数是不是为了类的初始化而存在的?
答:是的,构造函数都是为了类的初始化而存在的。
还有为什么一个类里会重载好多个带有不同参数的构造函数???
答:可以进行不同的初始化,方便使用
回复 使用道具 举报
类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法,即每个类都继承了Object类,在Object类中有的空参数的构造函数,所以其子类也会继承。即在没有自定义构造函数的情况下,系统会默认一个空参数的该类构造函数。构造函数的作用是对对象的初始化,构造函数的重载是对具有不同特有属性对象的初始化
回复 使用道具 举报
本帖最后由 黑马胡林 于 2012-4-1 14:02 编辑

默认构造函数看起来似乎根本没什么作用,没有接收任何输入参数,方法体也是个空的。它主要用来初始化对象。如初始化对象:int类型的Number被初始化为默认值0,string类型的string被初始化为默认值空白字符,这些工作都是由看似没起作用的默认构造函数所完成的。

构造函数的的重载,就是java多态的的一种得要体现。构造函数重载目的是支持多种方式构造对象。

一个类出现好多带不同参数的构造函数。是提高程序的运行效率。
创建多个构造函数只是为了让你在实例化这个类中能创建出带有这个类的不同属性的对象。
就可以用不同参数的构造方法,这样使用起来比较灵活,就是重载的意义 。
回复 使用道具 举报
当一个类中没有构造函数时,那么系统会默认给该类加入一个空参数的构造函数。
不带参数的构造函数是为了类的初始化而存在的。
定义不同的构造函数,是为了实现不同的功能。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马