zoukankan      html  css  js  c++  java
  • C#面向对象基础(二) 构造与析构 欢乐农场篇

    构造方法,特殊的方法.

    • 名称与类名相同
    • 无返回值(其实返回地是一个对象)

    在你的类末定义构造方法时,有一个空的构造方法(你看不到看不到)

    为什么要构造方法?  你用类创建一个对象时,直接做好一些事情,比如,把名字起好,年龄设置好...  这就是构造能帮你做的.

    下面为Animal类加入构造方法

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace ConApp
    {
        
    /// <summary>
        
    /// 动物(农场里的)
        
    /// </summary>
        public class Animal
        {
            
    // 字段  存储这些数据
            public string name;
            
    public int age;
            
    public bool ishungry;
            
    public float price;

            
    public Animal()
            {
                Console.WriteLine(
    "Animal构造了");
            }
            
    //构造方法重载  overload
            public Animal(string name)
            {
                
    this.name = name;
            }
            
    public Animal(string n, int a)
            {
                name 
    = n;
                age 
    = a;
            }

            
    public void ShowInfo()
            {
                Console.WriteLine(
    "动物 姓名{0} 年方{1}",name,age);
                Console.WriteLine(
    "当前位置 x:{0} y:{1}",x,y);
            }
        }
    }

    解释一下this

    this.name = name;    this 指的是当前实例,什么是"当前实例"?你在构造鸡的时候,当然实例就是鸡,你构造羊,当前实例就是羊...  第二个name ,是构造方法的参数.千万别混了!

    使用构造方法

     

     

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 
     6 namespace ConApp
     7 {
     8     /// <summary>
     9     /// 农场
    10     /// </summary>
    11     public  class Farm
    12     {
    13         public Animal cock;
    14         public Animal goat;
    15         public Animal cow;
    16         public Animal rabbit;
    17 
    18         /// <summary>
    19         /// 构造方法  开始建农场了  初始化
    20         /// </summary>
    21         public Farm()
    22         {
    23             Console.WriteLine("农场开始构造   building....");
    24 
    25             cock = new Animal("cock",1);
    26             goat = new Animal("xiyangyang",3
    );          
    27 
    28             cock.price =2;
    29             cock.ishungry = true;
    30 
    31             goat.price = 3;
    32             goat.ishungry = false;
    33 
    34             Console.WriteLine("农场初始化成功");
    35         }
    36 
    37         public void ShowAnimals()
    38         {
    39             cock.ShowInfo();
    40             goat.ShowInfo();
    41         }
    42     }
    43 }

    析构方法

    析构,就是解构.构造方法负责建对象析构负责销毁对象.

    析构方法   在构造方法前面加个~  不能有参数  不加访问修饰符

    怎么调用?  你不能调用,  CLR自动执行的. 在对象应该消失的时候...

     来看下Animal的析构

            //析构
            ~Animal()
            {
                Console.WriteLine(
    "析构 {0}",name);
            }
  • 相关阅读:
    @try { } @catch (NSException *exception) {} @finally {}
    键盘点出来就退不掉了,你可以把这几句加到有键盘的控制器里
    测试最新的微信iOS SDK 报错误
    堆、栈知识小结
    PV操作
    continue & break
    dll的def文件与__declspec(dllexport)导出函数方式比较
    setupapi.h和setupapi.lib該如何使用
    批量缺少头文件的解决办法(添加包含目录)
    易犯错误总结:
  • 原文地址:https://www.cnblogs.com/imxh/p/2168462.html
Copyright © 2011-2022 走看看