zoukankan      html  css  js  c++  java
  • 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;

           }

    }

  • 相关阅读:
    Boost.Bind的基础使用
    boost::bind
    winform多线程方式登录代码整理
    shared_from_this 几个值得注意的地方
    [转]gtest使用
    以boost::function和boost:bind取代虚函数
    asio学习2: TCP服务器端:对准时间 解析
    boost asio study
    Asio学习1: TCP客户端:对准时间 解析
    Shawn,别让我们失望
  • 原文地址:https://www.cnblogs.com/zyyzy/p/12419146.html
Copyright © 2011-2022 走看看