黑马程序员技术交流社区

标题: 关于构造函数的小问题 [打印本页]

作者: 郭繁森    时间: 2011-12-21 00:03
标题: 关于构造函数的小问题
本帖最后由 guofansen 于 2011-12-21 21:33 编辑

class preson
{
     String name;
     int age;
...................
}

想问下构造函数的格式是什么?还有括号里的两行是什么意思? 和以前的函数 定义的变量如:int x=0,y=1;有何区别
作者: 我心飞翔    时间: 2011-12-21 00:12
class  类名称
{
     访问权限  类名称(类型1  参数1,类型2  参数2,......)
    {
        程序语句;
    ...     //  构造方法没有返回值
    }
}


这就是构造方法的语法,要注意两点:1.它具有与类名相同的名称;2.它没有返回值

作者: 黄达标    时间: 2011-12-21 00:16
构造函数 特点:(1)函数名与类名相同;(2)不用定义返回值类型;(3)不可以写return语句。
构造函数一般默认的是: 类名(){}
当你需要覆盖Object类中的构造函数时,复写构造函数就行了
String name;  int age;
这两行是在定义person类的成员变量,如果你复写构造函数,那么这两个成员变量初始化值也是默认的,name=null,age=0
定义的变量如:int x=0,y=1
与这个没有区别,只是你已经给x和y进行了初始化。
         
作者: 黄达标    时间: 2011-12-21 00:21
黄达标 发表于 2011-12-21 00:16
构造函数 特点:(1)函数名与类名相同;(2)不用定义返回值类型;(3)不可以写return语句。
构造函数一 ...

写错了一句话,
String name;  int age;
这两行是在定义person类的成员变量,如果没有复写构造函数,建立类的对象时,调用默认的构造函数,那么这两个成员变量初始化值也是默认的,name=null,age=0

作者: 张帅    时间: 2011-12-21 00:35
其实这个问题,黑马的视频中都有解释,我就把我的笔记贴出来吧
构造函数
    (1)、特点
            1、函数名与类名相同
            2、不用定义返回值类型
            3、不可以写return 语句
    (2)作用:给对象进行初始化
    (3)、主意
            1、默认构造函数的特点
            2、多个构造函数适宜重载的形式存在的
    (4)、对象一建立就会调用与之对应的构造函数
    (5)、当一个类中没有定义构造函数时,那么系统会默认给该类加入一个默认的空参数的构造函数
    (6)、当在类中定义了用户的构造函数,则默认的构造函数将不存在
    (7)、构造函数与一般方法的区别
            构造函数在对象建立时执行,只有一次
            一般方法时,只要调用就会执行
    (8)、什么时候定义构造函数呢:当分析事物时,该事物存在剧本一些特性或者行为,那么将这些内容定义在构造函数中
格式
  1.     class Car{
  2.                         //Car(类型 变量名,类型 比那两名){    不写,则系统调用默认的,但是只要定义了构造函数,则默认的就没有了,构造函数也可以重载
  3.                         //        this.num = .....
  4.                         //}
  5.             private String color = "red";
  6.             private int num = 0;
  7.             public void run(){
  8.                     System.out.pringln("color = "+color+" ; num = "+num);
  9.             }
  10.     }
  11.     class CarDemo{
  12.             public static void main(String[] args){
  13.                     Car c = new Car();
  14.                     c.color = "blue";
  15.                     c.run();
  16.             }
  17.     }
复制代码
还有就是代码块中变量的区别
成员变量,局部变量
                (1)、作用范围:成员变量作用于整个类中,局部变量作用于函数中,或者语句中
                (2)、在内存中的位置:成员变量在堆内存中,因为对象的存在,才在内存中存在。局部变量存在于栈内存中
如果想使用成员变量,即对象的属性,则应该 对象.变量名,如果该成员变量为类变量,且为static,没有别private修饰,则可以,类名.变量名
在构造函数内,如果成员变量和局部变量重名,根据就近原则, 直接使用该变量则是局部变量,如果想用成员变量,则应使用this关键字,this 代表本来的对象,代表它所在函数对象的引用。简单说哪个对象在调用 this 所在的函数,this就代表哪个对象,this.变量名

以上就是毕老师在视频中的讲解,如有不对的地方,请指出来
作者: 为梦而战    时间: 2011-12-21 01:37
本帖最后由 为梦而战 于 2011-12-21 01:44 编辑

class preson
{
        String name;//这是Person类中的成员变量,一般是private即私有的,
     int age;
...................
}
构造函数的作用就是创建对象时,为对象的成员变量进行初始化的。
格式: (1)Person(){
                    
                        }//这个构造函数不写也可以,因为不写的话,系统回自动加上的。
      
       (2)Person(String name,int age)
                     {
                            this.name=name;
                            thiis.age=age;
                     }
            (3)Person(String name)
                   {
                            this.name=name;
                   }
           (4)Person(int age )
                    {
                            this.age=age;
                     }
当然,具体构造方法有多少种,得看你的成员变量有多少个,以及你创建对象时需要对多少个成员变量进行初始化了。概要需要写构造方法并在对象初始化的时候调用对应的构造方法就可以了。
作者: 为梦而战    时间: 2011-12-21 01:48
至于{}中的两行,那是Person类中的成员变量,可以被public ,private,等修饰符修饰,以赋于它们相应的权限,它的作用范围是Person类体。
而一般函数里的变量的作用范围是本函数体,除了全局变量。




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