c# 面向对象

c# 类的继承

namespace ConsoleApp2
{
    /// 
    /// 派生类只能继承一个基类,c#不支持多重继承
    /// 
    /// 
    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
{

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

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

c#多态

namespace ConsoleApp2
{

    /// 
    /// 通过继承实现的不同对象调用相同的方法,表现出不同的行为,称为多态
    /// 
    /// 
    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#抽象类与封装类

你可能感兴趣的:(c#开发,c#,java,开发语言)