c# 面向对象

c# 类的继承

namespace ConsoleApp2
{
    /// <summary>
    /// 派生类只能继承一个基类,c#不支持多重继承
    /// </summary>
    /// 
    public class pepople
    {
        private string _name; //定义一个字段
        public string Name
        { get { return _name; }
            set { _name = value; }
        }
        private int _age;
        public int Age { get { return _age; } set { _age = value; }
        }
    }

    public class chengxuyuan : pepople //继承父类
    {
        public string a = "我是一个程序员";
        public void write()  //非虚方法,多态通过虚方法实现,非虚方法可以进行重写
        {
            Console.WriteLine("我的名字是{0},今年{1}岁了", this.Name, this.Age);
            Console.WriteLine(a);
        }
    }
    internal class Program
    {
        static chengxuyuan a = new chengxuyuan();
        static void Main(string[] args)
        {            
            a.Name = "李明";
            a.Age = 10;
            a.write();
        }
    }
}

c#构造函数

namespace ConsoleApp2
{
    public class myclass1
    {
        public myclass1 () 
        {
            Console.WriteLine("这是基类的无参构造函数");
        }
    }
    public class myclass2:myclass1
    {
        public myclass2()
        {
            Console.WriteLine("这是派生类的无参构造函数");
        }
        public myclass2(int a)
        {
            Console.WriteLine("这是派生类带一个参数的构造参数");
        }
    }
    
    internal class Program
    {
        private static void Main()
        {
            myclass2 a = new myclass2(1);
        }
    }
}
namespace ConsoleApp2
{
    public class myclass1
    {
        public myclass1 () 
        {
            Console.WriteLine("这是基类的无参构造函数");
        }
        public myclass1(int a)
        {
            Console.WriteLine("这是基类的带参构造函数");
        }
    }
    public class myclass2:myclass1
    {
        public myclass2(): base()
        {
            Console.WriteLine("这是派生类的无参构造函数");
        }
        public myclass2(int a): base(a) 
        {
            Console.WriteLine("这是派生类带一个参数的构造参数");
        }
    }
    
    internal class Program
    {
        private static void Main()
        {
            myclass2 a = new myclass2(1);
            myclass2 b = new myclass2();
        }
    }
}
namespace ConsoleApp2
{
   public class Person
    {
        public string name="李四";
        public string tel = "123456";
        public virtual void getinfo()
        {
            Console.WriteLine("姓名:{0}", this.name);
            Console.WriteLine("电话:{0}",this.tel);
        }

    }
    class Elplyee:Person
    {
        public int age = 18;
        public override void getinfo()  //override是重写,new是隐藏
        {
            base.getinfo();
            Console.WriteLine("年龄:{0}",this.age);
        }
    }
    internal class Program
    {
        private static void Main()
        {
            Elplyee a=  new Elplyee();
            a.getinfo();
        }
    }
}

c#类的封装

namespace ConsoleApp2
{

    /// <summary>
    /// public 公开的,public允许一个类将其成员变量和成员函数暴露给其他的函数和对象。、
    /// 任何公有成员都可以被外部的类访问
    /// private 私有的 private访问修饰符允许一个类将其成员变量和成员函数对其他的函数和对象进行隐藏。
    /// protected 受保护的 protected访问修饰符允许派生类访问它的基类的成员变量和成员函数,这样有助于实现继承
    /// internal 内部访问,是指同一程序集中
    /// </summary>

    internal class Program
    {
        private static void Main()
        {
            
        }
    }
}

c#多态

namespace ConsoleApp2
{

    /// <summary>
    /// 通过继承实现的不同对象调用相同的方法,表现出不同的行为,称为多态
    /// </summary>
    /// 
    public class Animal
    {
        public virtual void Eat()  //定义一个虚方法
        {
            Console.WriteLine("我是一只小动物,我喜欢吃肉");
        }
        public void Drink() 
        {
            Console.WriteLine("我是一只小动物,我喜欢喝水");
        }
    }
    public class Dog:Animal
    {
        public override void Eat()
        {
            //base.Eat();
            Console.WriteLine("我是狗,我喜欢吃屎");
        }
        public new void Drink()
        {
            Console.WriteLine("我是狗,我喜欢喝水");
        }
    }
    public class Cat : Animal
    {
        public override void Eat()
        {
            //base.Eat();
            Console.WriteLine("我是猫,我喜欢吃鱼");
        }
        public new void Drink()
        {
            Console.WriteLine("我是鱼,我喜欢喝水");
        }
    }

    internal class Program
    {
        private static void Main()
        {

            //Dog dog = new();
            //dog.Eat();
            //dog.Drink();

            Animal[] a = {new Dog(),new Cat()};
            foreach ( Animal i in a)
            {
                i.Eat();
                i.Drink();
            }
        }
    }
}

c#接口

c#抽象类与封装类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一壶浊酒..

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

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

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

打赏作者

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

抵扣说明:

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

余额充值