3.01_面向对象基础(构造方法)

01_面向对象(构造方法Constructor概述和格式)

  * A:构造方法概述和作用

         * 给对象的数据(属性)进行初始化

  * B:构造方法格式特点

         * a:方法名与类名相同(大小也要与类名一致)

         * b:没有返回值类型,连void都没有

         * c:没有具体的返回值return;

  class Demo1_Constructor {                                      //Constructor构造

         public static void main(String[] args) {

                Person p = new Person();                           //在一创建对象的时候,系统就帮我调用了构造方法

                //p.Person();                                             //构造方法不能用对象调用

                p.show();

 

              Person p2 = new Person();                         //再次创建对象

                p2.show();

       }

}

 

/*

  * A:构造方法概述和作用

         * 给对象的数据(属性)进行初始化

  * B:构造方法格式特点

         * a:方法名与类名相同(大小也要与类名一致)

         * b:没有返回值类型,连void都没有

         * c:没有具体的返回值return;

*/

 

  class Person {

         private String name;

         private int age;

 

       //构造方法

         public Person() {

                //System.out.println("Hello World!");

                //return;                                                    //构造方法也是有return语句的,格式是return;

                name = "张三";

                age = 23;

}

 

       public void show() {

              System.out.println(name + "..." + age);

       }

}

构造方法的作用及格式特点分别是什么?

  * a:方法名与类名相同(大小也要与类名一致)

  * b:没有返回值类型,连void都没有

  * c:没有具体的返回值return;

思考:构造方法可以重载吗?

  可以

02_面向对象(构造方法的重载及注意事项)

  * A:案例演示
    * 构造方法的重载
    * 重载:方法名相同,与返回值类型无关(构造方法没有返回值),只看参数列表
* B:构造方法注意事项
    * a:如果我们没有给出构造方法,系统将自动提供一个无参构造方法。
    * b:如果我们给出了构造方法,系统将不再提供默认的无参构造方法。
        * 注意:这个时候,如果我们还想使用无参构造方法,就必须自己给出。建议永远自己给出无参构造方法

class Demo2_Person {

       public static void main(String[] args) {

              Person p1 = new Person();

              p1.show();

 

              System.out.println("---------------------");

 

              Person p2 = new Person("张三",23);

              p2.show();

 

              System.out.println("---------------------");

 

              Person p3 = new Person("李四",24);

              p3.show();

       }

}

/*

* A:案例演示

       * 构造方法的重载

       * 重载:方法名相同,与返回值类型无关(构造方法没有返回值),只看参数列表

* B:构造方法注意事项

       * a:如果我们没有给出构造方法,系统将自动提供一个无参构造方法。

  * b:如果我们给出了构造方法,系统将不再提供默认的无参构造方法。

              * 注意:这个时候,如果我们还想使用无参构造方法,就必须自己给出。建议永远自己给出无参构造方法

*/

class Person {

       private String name;                    //姓名

       private int age;                            //年龄

 

       public Person() {                         //空参构造

              System.out.println("空参的构造");

       }

 

       public Person(String name,int age) {

              this.name = name;

              this.age = age;

              System.out.println("有参的构造");

       }

      

       public void show() {

              System.out.println(name + "..." + age);

       }

}

使用构造方法的时候,注意事项有哪些?

  * a:如果我们没有给出构造方法,系统将自动提供一个无参构造方法。

  * b:如果我们给出了构造方法,系统将不再提供默认的无参构造方法。

  * 注意:这个时候,如果我们还想使用无参构造方法,就必须自己给出。建议永远自己给出无参构造方法

思考:构造方法,set方法都可以给成员变量赋值,这两种赋值方式有什么区别?

03_面向对象(给成员变量赋值的两种方式的区别)

 A:setXxx()方法
    * 修改属性值 
* B:构造方法
    * 给对象中属性进行初始化 

  

class Demo3_Person {

       public static void main(String[] args) {

              Person p1 = new Person("张三",23);

              //p1 = new Person("张天一",23);  //这种方式看运行结果貌似是改名了,其实是将原对象变成垃圾

              System.out.println(p1.getName() + "..." + p1.getAge());

 

    System.out.println("--------------------");

              Person p2 = new Person();           //空参构造创建对象

              p2.setName("李四");

              p2.setAge(24);

 

              p2.setName("李鬼");

              System.out.println(p2.getName() + "..." + p2.getAge());

       }

}

/*

构造方法

       给属性进行初始化

setXxx方法

       修改属性值

       这两种方式,在开发中用setXxx更多一些,因为比较灵活

*/

class Person {

       private String name;                           //姓名

       private int age;                                   //年龄

 

       public Person() {                                //空参构造

       }

 

       public Person(String name,int age) {//有参构造

              this.name = name;

              this.age = age;

       }

      

       public void setName(String name) {     //设置姓名

              this.name = name;

       }

 

       public String getName() {                   //获取姓名

              return name;

       }

 

       public void setAge(int age) {        //设置年龄

              this.age = age;

       }

 

       public int getAge() {                          //获取年龄

              return age;

       }

}

猜你喜欢

转载自www.cnblogs.com/zyyzy/p/12419146.html