【C#】面向对象

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LT_Future/article/details/81836716

类和对象

对象:看得见,摸得到,具体的,特指的

类:是模板,确定对象将会拥有的特征(属性)和行为(方法)

类和对象的区别

  • 类是对象的类型
  • 对象是类的实例
  • 类不占内存,对象占内存

类的代码定义

[访问修饰符]class 类名
{
    成员;
    ...
}
//Person 类
public class Person
{
    public string _name;//public 定义访问级别
    public char _gender;//_gender 字段而非属性
    public int _age;
    //定义SayHello方法
    public void SayHello()
    {
        Console .WriteLine("hello 大家好");
    }
    public void Walk()
    {
        Console.WriteLine("我走着走");
    }
}

访问修饰符

代码中类的默认访问修饰符为internal;
属性和方法的默认访问修饰符为public;

访问修饰符 访问权限
private 私有成员,在类的内部才可以访问
public 公共成员,完全公开,没有访问权限
protected 保护成员,该类内部和继承类中可以访问
internal 当前程序集内可以访问

类的实例化

当Person类中字段的访问修饰符为public时,实例化代码为:

class program
{   
    static void Main(string[]args)
    {
        //实例化Person类
        Person per=new Person();
        per._name="张三";
        per._age=18;//类的成员的访问
        per._gender='男';
        per.SayHello();
        per.Walk();
        Console.WriteLine(per._name);
        Console.ReadKey();
    }
}

而一般情况下,一个类中字段用private修饰。

若仍按上面方法实例化,代码就会报错。

这时我们可以通过在Person类中添加属性来实现实例化。

属性

  1. 属性是为了保护与之相对应的字段的
  2. 保证对字段的读取和赋值符合要求
  3. 属性分为:读写,只读,只写
  4. 允许外部访问的变量一定要声明为属性
//Person 类
public class Person
{
    private string _name;
    private char _gender;
    private int _age;

    //定义属性
    public string Name
    {
        get{return _name;}//读
        set{_name=value;}//写
    }
    public char Gender
    {
        get{return _gender;}
        set{_gender=value;}
    }
    public int Age
    {
        get{return _age;}
        set{_age=value;}
    }
    //定义SayHello方法
    public void SayHello()
    {
        Console .WriteLine("hello 大家好");
    }
    public void Walk()
    {
        Console.WriteLine("我走着走");
    }
}
//program 类
class program
{   
    static void Main(string[]args)
    {
        //实例化Person类
        Person per=new Person();
        per.Name="张三";//赋值
        per.Age=18;
        per.Gender='男';
        per.SayHello();
        per.Walk();
        Console.WriteLine(per.Name);//读值
        Console.WriteLine(per.Gender);
        Consoel.Writeline(per.Age);
        Console.ReadKey();
    }
}

猜你喜欢

转载自blog.csdn.net/LT_Future/article/details/81836716