黑马程序员技术交流社区

标题: 大家给我讲讲构造方法 [打印本页]

作者: mysouffle    时间: 2014-8-15 09:27
标题: 大家给我讲讲构造方法
构造方法真的挺乱的,写代码的时候根本不知道怎么写,听课的时候还可以,但是自己写的时候就不会了
作者: 范靖明    时间: 2014-8-15 09:40
构造方法与类同名,用于初始化对象!不能晕哦,后面还有代码块,静态代码块、构造代码块,考察的是谁先执行的优先级问题
作者: 沿途小将    时间: 2014-8-15 09:45
本帖最后由 沿途小将 于 2014-8-15 09:53 编辑
  1. public class Test{
  2.   int a=0;//成员属性
  3. public static void main(String[] args){
  4. }
  5. public Test(){
  6. }
  7. }
复制代码


作者: 沿途小将    时间: 2014-8-15 09:52
我举例无参的构造函数(必须为无返回值,方法名必须和类名一样)
通常在给成员属性赋值时使用(而且是调用该类时就会使用的哦)  
  1. public class Test{
  2.   int a=0;//成员属性
  3. public static void main(String[] args){
  4. }
  5. public Test(){
  6. }
  7. }
复制代码

作者: 阳光的嘉主角    时间: 2014-8-15 10:26
哥来给你讲讲
作者: 阳光的嘉主角    时间: 2014-8-15 10:27
成员变量 变量

成员函数,变量.png (129.93 KB, 下载次数: 8)

成员函数,变量.png

作者: 阳光的嘉主角    时间: 2014-8-15 10:28
静态 and other

静态代码块,静态成员变量,静态成员函数.png (153.55 KB, 下载次数: 14)

静态代码块,静态成员变量,静态成员函数.png

作者: 阳光的嘉主角    时间: 2014-8-15 10:30
java 执行顺序

执行顺序.png (134.89 KB, 下载次数: 18)

执行顺序.png

作者: 阳光的嘉主角    时间: 2014-8-15 10:31
调用情况

涉及父类调用00.png (140.2 KB, 下载次数: 12)

涉及父类调用00.png

设计父类调用01.png (137.22 KB, 下载次数: 16)

设计父类调用01.png

作者: 阳光的嘉主角    时间: 2014-8-15 10:40
本帖最后由 阳光的嘉主角 于 2014-8-15 10:44 编辑

public class Test {

        public static void main(String[] args) {
               
        }

        private int x = 100; // 成员变量 / 属性  / 字段   指的都是它 名字好几个呢  // 成员变量虚拟机会添加的 默认值

        // 叫函数的是它 叫方法的也是它  
        public void 呵呵(){
                int xx = x;  // 这里的xx 叫 局部变量     , 必须初始化值  什么叫初始化? 你就理解给它个默认值
                System.out.println(xx);
        }
        public void hehe(){
               
        }
        public Test() {
                System.out.println("无参构造函数");
        }

        public Test(int x) {
                System.out.println(x);
                System.out.println("有参构造函数1");
        }

        public Test(int x, int y, int z) {
                System.out.println(x + "" + y + "" + z);
                System.out.println("有参构造函数2");
        }

        public Test(int x, int y) {
                System.out.println(x + "--" + y);
                System.out.println("有参构造函数3");
        }
        
}
作者: mysouffle    时间: 2014-8-15 11:34
谢谢大家的帮助,我再好好学习学习
作者: 黑马-胡明    时间: 2014-8-15 13:23
构造方法同类名相同,()里面可以传参数。
作者: Joemi    时间: 2014-8-15 13:33
构造方法和类同名啊,怎么写看需要,一般用来初始化成员变量
作者: 王凯路路    时间: 2014-8-15 14:59
楼上哥们连静态代码块,构造代码块都讲出来了 ?
不过人家好想问的是构造函数啊?

楼主其实不用想多难, 就像平常方法一样,只不过他跟类名相同就是了,他也可以传参数.
他是对象一初始化就必须执行的东西, 这就完了.



作者: 周靖轩    时间: 2014-8-16 09:04
范靖明 发表于 2014-8-15 09:40
构造方法与类同名,用于初始化对象!不能晕哦,后面还有代码块,静态代码块、构造代码块,考察的是谁先执行 ...

那这几个执行的顺序是什么,菜鸟请教!
作者: 单线程xia    时间: 2014-8-16 10:41
初始化对象的时候要调用构造方法,私有化构造方法的类不可new对象。一种是像Collections那样的工具类,另外一种就是单例模式的那样,存在一个静态方法返回这个对象。
作者: mysouffle    时间: 2014-8-16 21:27
谢谢大家
作者: 碎流    时间: 2014-8-16 21:30
看那给力的哥们....我默默回头......还是找个美女头像来......
作者: mysouffle    时间: 2014-8-16 21:33
碎流 发表于 2014-8-16 21:30
看那给力的哥们....我默默回头......还是找个美女头像来......

没听懂什么意思
作者: kakasa    时间: 2014-8-16 21:50
上边的哥们好热心
作者: 嘿~~    时间: 2014-8-16 21:57
构造方法用来创建对象的,可带参数,也可不带,如果需要对象以创建就具备某些属性,可以把这些属性定义在构造方法内
作者: 亨利大帝    时间: 2014-8-16 22:11
构造方法,创建对象,然后初始化,准没错,只不过是分无参构造和带参构造,无参构造常与set()get()方法一块用
作者: 李国荧    时间: 2014-8-17 07:32
学习了……
作者: 王成龙    时间: 2014-8-18 14:18
构造方法,用来给对象初始化的,只能执行一次。且对象一建立就执行。
             在书写上,构造方法的函数名必须和类名一样。
构造方法和构造代码块,都是给对象完成初始化动作的。 要掌握:构造方法,构造代码块,static,static代码块以及默认初始化他们的优先顺序。
作者: 3040789425    时间: 2014-8-19 23:07
构造方法比一般函数方法简单多了吧,没有返回值类型,函数名就是类名,函数体跟一般函数一样写
作者: Justfeeling    时间: 2014-8-19 23:51
/*
*         对象一建立,就会调用与之对应的构造函数。
*         构造函数的作用:给对象进行初始化。
*         当一个类中没有定义构造函数时,系统会默认给该类加一个空参数的构造函数。
*         当在类中自定义了一个构造函数后,默认构造函数就没有了。
*
*        当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中。
/

class Demo{
           public static void main (String[] args){
                  
                   Person p=new Person();  
                   Person p1=new Person("xiaoli");
                   Person p2=new Person("xiaoxiao",23);
                  
    }
}

class Person{
       
        private String name;
        private int age;
       
        Person(){
                System.out.println("A:name="+name+",age="+age);
                cry();
        }
        Person(String name){
                this.name=name;
                System.out.println("B:name="+name+",age="+age);
                cry();
        }
        Person(String name,int age){
                super();
                this.age=age;
                System.out.println("C:name="+name+",age="+age);
                cry();
        }
        public void cry(){
                System.out.println("cry.......");
        }
}


        A:name=null,age=0
        cry.......
        B:name=xiaoli,age=0
        cry.......
        C:name=xiaoxiao,age=23
        cry.......

作者: wfaly    时间: 2014-8-20 00:23
阳光的嘉主角 发表于 2014-8-15 10:31
调用情况

谢谢 楼主分享




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