一.类与对象
1.类的概念
类是 具有相同特征 具有相同行为 的一类事物的抽象
类是对象的模板,可以通过类来创建对象.
类的关键词是class
2.类申明的位置
类申明在 namespace 语句块中
同一语句块中不能出现明名重复的类
3.类声明的语法
public class classname
{
//特征——成员变量
//行为——成员方法
//保护特征——成员属性
//构造函数和析构函数
//索引器
//运算符重载
//静态成员
}
//命名用帕斯卡命名法
4.(类)对象
类的申明 和 类对象(变量) 的申明是两个概念
类的申明类似 枚举 和 结构体 的申明,相当于申明了一个自定义变量类型
而对象 是类创建出来的
相当于申明了一个指定类的变量
类创建对象的过程 一般称为实例化对象
类对象 都是引用类型的
5.实例化对象基本语法
类名 变量名;
类名 变量名 = null;(null代表空)
类名 变量名 = new 类名();
例:
//分配的内存空间为空
Person p;
Person p1 = null;
//分配了内存空间
Person p2 = new Person();
Person p3 = new Person();
//要几个对象就new几个对象
注意! 实例化后的两个对象可视作不同的个体 他们之间的属性互不相关
二.成员变量与访问修饰符
1.成员变量的概念
成员变量是 申明在类语句块中的用于描述成员特征的变量
可以是任意的变量类型包括自己所处的类
注意:不能在类中实例化与自己同类的变量!!!
//定义一个位置结构体
struct Position
{
//定义变量
public int x;
public int y;
//构造函数
position (x,y);
//函数方法
}
//定义一个性别枚举
enum E_SexType
{
man,
woman,
}
class person
{
int age;
string name = ""; //可以初始化
E_SexType sex;
Position pos;
person[] boyfriend;
person girlfriend = new person; //初始化后会报错!!
}
2.访问修饰符 (3p)
[1] public -- 公共的 自己(内部) 和 别人(外部) 都能访问和使用
[2]private -- 私有的 自己(内部)才能访问和使用,不写默认为private
[3]protected -- 保护的 自己(内部) 和 子类 才能访问和使用
3.成员变量的使用和初始值
使用:先实例化
person p = new person();
然后
p.age = 10;
值类型 数字类型默认为0
bool类型默认为false
引用类型默认为 null
判断默认值的小技巧
例如:如果我们要了解bool类型的默认值:
Console.WriteLine(default(bool));
三.成员方法
1.概念
成员方法(函数) 用于表现对象行为
[1]申明在类语句块中
[2]是用来描述对象行为的
[3]规则和函数申明规则相同
[4]受到访问修饰符规则影响
[5]返回值参数不做限制
使用方法例如
class Person
{
//判断是否成年
public bool IsAdult()
{
return age >= 18;
}
//说话行为
public Speak(string str)
{
IsAdult();
Console.WriteLine("{0}",str);
}
//成员变量初始化
public string name;
public int age;
}
static void Main(string[] args)
{
//使用成员方法
//先实例化对象
Person p = new person();
//成员变量赋值
p.name = "小明";
p.age = 18;
使用说话方法
p.Speak("我爱你");
if(p.IsAdult())
{
p.Speak("我要耍朋友");
}
}
2.应用
我们可以利用这一特性来封装函数,例如:
在数组的增删查改中
我们可以定义类的数组然后
class Person
{
//定义一个新的成员方法
public void AddFriend(person p)
{
//传入的值为空时,仅开辟一个新空间
if(friends == null)
{
friends = new Person[]{p};
}
else
{
//新建一个数组
Person[] newFriends = new Person[friends.Length+1];
//搬家
for(int i = 0 ; i < friends.Length ; i++)
{
newFriends[i] = friends[i];
}
//把新加的朋友放到最后一个
newFriends[newFriends.Length - 1] = p;
//地址重新定向
friends = newFriends;
}
}
//成员变量初始化
public string name;
public int age;
public person[] friends;
}
static void Main(string[] args)
{
Person p1 = new Person();
person p2 = new Person();
p2.name = "梁非凡";
p2.age = 16;
p1.AddFriends(p2);
//打印friends
for(int i = 0 ; i < p.friends.Length ;i++)
{
Console.WriteLine(p.friends[i].name);
}
}
四.构造函数、析构函数、垃圾回收机制
1.构造函数(与结构体类似)
【1】 基本概念
在实例化对象时 会调用用于初始化的函数
如果不写 默认存在一个无参构造函数