面向对象编程

类就是具有相同的属性和功能的对象的抽象的集合

1. 类的定义使用关键字class

类的定义格式:
    class 类名:
        类体
    class Cat
    {
        public string Name = "Tom";
        public int Age = 3;

        public string Shout()
        {
            return "喵";
        }
    }
类体由属性和方法组成
属性是类中的变量,用于描述类的特征
方法是类中的函数,用于描述类的行为

2. 类的命名

类的命名规则:
    类名由一个或多个单词组成,每个单词的首字母大写,其余字母小写,例如:Student
    类名不能是Python的关键字,例如:class, def, if等

3. 类的实例化

类的实例化就是创建类的对象,使用关键字new来创建类的对象
类的实例化格式:
    对象名 = 类名()
类的实例化过程:
    创建一个对象
    调用类的构造方法(如果没有定义构造方法,则使用默认的构造方法)
    将对象的引用赋值给对象名
类的实例化示例:
    Cat cat = new Cat();
    cat.Shout();

4. 类的属性

类的属性是类中的变量,用于描述类的特征
类的属性的定义格式:
    class 类名:
        属性名 = 属性值
类的属性的示例:
    class Cat
    {
        public string Name = "Tom";
        public int Age = 3;
    }

5. 类的方法

类的方法是类中的函数,用于描述类的行为
类的方法的示例:
    class Cat
    {
        public string Shout()
        {
            return "喵";
        }
    }

6. 类的构造方法

类的构造方法是类中的特殊方法,用于初始化类的对象
类的构造方法的示例:
    class Cat
    {
        public string Name;
        public int Age;

        public Cat(string name, int age)
        {
            Name = name;
            Age = age;
        }
    }

7. 类的继承

类的继承是类与类之间的关系,一个类可以继承另一个类的属性和方法
类的继承的示例:
    class Animal
    {
        public string Name;
        public int Age;

        public void Shout()
        {
            Console.WriteLine("动物在叫");
        }
    }

    class Cat : Animal
    {
        public void Meow()
        {
            Console.WriteLine("喵");
        }
    }

8. 类的多态(方法的重载)

类的多态是类与类之间的关系,一个类可以有多种表现形式
类的多态的示例:
    class Animal
    {
        public virtual void Shout()
        {
            Console.WriteLine("动物在叫");
        }
    }

    class Cat : Animal
    {
        public override void Shout()
        {
            Console.WriteLine("喵");
        }
    }

    class Dog : Animal
    {
        public override void Shout()
        {
            Console.WriteLine("汪");
        }
    }

    Animal animal1 = new Cat();
    Animal animal2 = new Dog();

    animal1.Shout(); // 输出:喵
    animal2.Shout(); // 输出:汪

重载和重写的区别

重载是同一个类中,方法名相同,参数列表不同
重写是子类重写父类的方法,方法名和参数列表都相同

9. 类的封装

类的封装是类与类之间的关系,一个类可以封装其他类的属性和方法
类的封装的示例:
    
    class Animal
    {
        private string name;
        private int age;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public int Age
        {
            get { return age; }
            set { age = value; }
        }

        public void Shout()
        {
            Console.WriteLine("动物在叫");
        }
    }

// 在主程序中实例化Animal类并使用Name属性


class Program
{
    static void Main(string[] args)
    {
        // 实例化Animal类
        Animal myAnimal = new Animal();

        // 设置Name属性
        myAnimal.Name = "Buddy";

        // 获取并输出Name属性
        Console.WriteLine($"The animal's name is: {myAnimal.Name}");

        // 调用Shout方法
        myAnimal.Shout();
    }
}

10. 类的接口

类的接口是类与类之间的关系,一个类可以实现多个接口
类的接口的示例:

    interface IAnimal
    {
        void Shout();
    }

    class Animal : IAnimal
    {
        public void Shout()
        {
            Console.WriteLine("动物在叫");
        }
    }

    Animal animal = new Animal();
    animal.Shout(); // 输出:动物在叫

11. 类的访问权限

类的访问权限是指类的成员(属性、方法、事件等)的访问级别,可以是public、private、protected、internal等

public表示它所修饰的类成员可以允许其他任何类来访问,俗称公有的
private表示只允许同一个类中的成员访问,其他类包括它的子类无法访问
protected表示只允许同一个类中的成员或者其派生类来访问
internal表示只允许同一个程序集中的成员访问,其他程序集中的类无法访问
(
情形一:比如MyCompany.MyProject.DAL里的若干个.cs文件,编译得到DAL程序集,而MyCompany.MyProject.BLL里的若干.cs文件,编译得到BLL程序集。
情形二:同样是MyCompany.MyProject.DAL空间里的,我可能有一个用于支持SQL Server的程序集DAL_SQLServer.dll,可能还有一个支持Oracle的程序集DAL_Oracle.dll。
命名空间与程序集没有一一对应的关系,关键还是看你的项目组织和输出)

类的访问权限的示例:

    public class Animal
    {
        public string Name { get; set; }
        private int Age { get; set; }
        protected string Species { get; set; }
        internal string Color { get; set; }
    }

    Animal animal = new Animal();
    animal.Name = "Buddy"; // 可以访问public成员
    //animal.Age = 5; // 不能访问private成员

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时是石头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值