C#面向对象基础(二) 构造与析构 欢乐农场篇
2011-09-06 10:36
459 查看
构造方法,特殊的方法.
名称与类名相同
无返回值(其实返回地是一个对象)
在你的类末定义构造方法时,有一个空的构造方法(你看不到看不到)
为什么要构造方法? 你用类创建一个对象时,直接做好一些事情,比如,把名字起好,年龄设置好... 这就是构造能帮你做的.
下面为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);
}
名称与类名相同
无返回值(其实返回地是一个对象)
在你的类末定义构造方法时,有一个空的构造方法(你看不到看不到)
为什么要构造方法? 你用类创建一个对象时,直接做好一些事情,比如,把名字起好,年龄设置好... 这就是构造能帮你做的.
下面为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);
}
相关文章推荐
- php面向对象基础概念(构造方法和析构方法)
- C#面向对象基础(一) 类与对象 欢乐农场篇
- 面向对象基础 之-定义类,声明,属性,成员方法,传值,构造与析构方法
- 跟着姜少学Java基础编程之十二:面向对象-构造方法
- 学习笔记9:C#基础(面向对象和字符串的方法)
- C#基础总结之七面向对象知识点总结1
- 面向对象基础(类与对象的定义、进一步研究、封装性、构造方法与匿名对象)
- Php面向对象学习笔记 – 构造、析构、对象赋值、克隆
- c# 面向对象基础技能
- C#面向对象基础--对象引用
- C#总结(面向对象基础)中
- C# 面向对象设计基础 二(上)
- C#面向对象基础(二)
- C#基础总结之八面向对象知识点总结-继承与多态-接口
- c#基础-oop(面向对象理解)
- 黑马程序员——C#面向对象基础复习日记
- C#基础加强第二天总结--面向对象2及字符串
- C# 基础知识系列之面向对象基础
- c#面向对象基础。
- JAVA基础再回首(四)——面向对象思想、类与对象、成员/局部变量、匿名对象、封装、private、this、构造方法