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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hello隔壁老李 中级黑马   /  2015-9-16 21:29  /  384 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 hello隔壁老李 于 2015-9-16 21:31 编辑

构造方法特点:
    1,函数名与类名相同
    2,不用定义返回值类型
    3,没有具体的返回值

作用:
     给对象进行初始化。

注意:
        1,如果没有定义构造方法,系统会默认给出一个无参数构造方法
                (public Person() { })
        2,如果自己定义了构造方法,系统不再提供无参构造。
        3,多个构造函数是以重载的形式存在的
        4,构造方法重载.。其实就是构造方法接收不同的参数。

给私有成员变量赋值:
        A:通过set方法。推荐使用set方法
        B:通过构造方法。


例子:
/*构造方法:
        1,方法名与类名相同
        2,没有返回值类型
        3,在方法中不能使用return返回一个值

构造方法的重载:与函数的一样,但是函数与返回类型无关,
                                构造方法无返回值类型,void也不能写。

私有成员变量赋值的两个方法:构造方法、set方法设置(推荐)

注意:无参数构造方法也可以在定义对象时,括号内加入你想的赋值即可。

思考:为什么推荐set方法赋值?
    可能是构造方法在定义对象时,就给调用了。这需要在对象那里传进参数,
不好。而在set方法内,只对想传值的赋值即可。
*/
class DemoGouZao
{
        public static void main(String[] args)
        {   
                //无参数构造方法也可以赋值,直接赋值。
                //GouZao g=new GouZao(22,"海");
                GouZao g=new GouZao();                 //调用无参数的构造方法
                g.run();                                        //姓名和年龄为空

                //这里是通过了构造方法初始化了私有变量
                GouZao g2=new GouZao(18,"李雷"); //调用有参数的构造方法
                g2.run();                                                //这里会输出,“我叫李雷,今年18岁”

                //这里是利用set方法来初始化私有变量
                GouZao g3=new GouZao();
                g3.setAge(20);
                g3.run();  //名字null,年龄20

                GouZao g4=new GouZao(56);
        }
}
class GouZao //定义一个构造类
{
        private int age;
        private String name;

        public GouZao()
        {
                System.out.println("没有参数传入的构造方法");
        }
        GouZao(int r)  //不带修饰符的构造方法
        {
                age=r;
                System.out.println("年龄:"+age+"不带修饰符");
        }
        public GouZao(int a,String na) //带参数的构造方法
        {
                age=a;  //赋值给本类中的变量
                name=na;  
                System.out.println("age:"+age+" "+"name:"+name);
        }
        public void run() //定义一个方法
                {
                        System.out.println("大家好,我叫"+name+",今年"+age+"岁");
                }
        public void setAge(int v) //定义set方法
        {
                age=v;
                System.out.println("大家好,我叫"+name+",今年"+age+"岁,我喜欢哈哈大笑");
        }        }
        /*public void GouZao() //这个不是构造方法
        {
                System.out.println("注意,构造方法没有返回值类型");
        }*/

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马