• c#入门 OOP技术


    对象的一些特性
    • 接口
    • 继承
    • 多态性
    • 对象之间的关系
    • 运算符重载
    • 事件
    • 引用类型和值类型
     
    接口:
    接口是吧公共实例(非静态)方法和属性组合起来,以封装特定功能的一个集合。一旦指定了接口就可以在类中实现它。类就可以支持接口所指定的所有属性成员。
    接口不能单独存在
    接口的命名 :一般以大写字母I开头
    定义接口 关键字: interface 
    interface IPhone//用interface关键字
        {
            void Dial();//public可省略
            void PickUp();
            void Send();
            void Receive();
    
        }
    实现接口:
    class NokiaPhone : IPhone  接口的引用就是在类后用“:” 再加接口名。
     {
            public void Dial()
            {
                Console.WriteLine("NokiaPhone is call");
            }
    
            public void PickUp()
            {
                Console.WriteLine("hello,");
            }
    
            public void Receive()
            {
                Console.WriteLine("dear......");
            }
    
            public void Send()
            {
                Console.WriteLine("send...");
            }
        }
    本质:服务的调用者与服务的提供者之间的契约,所以必须用public来修饰接口中的所有成员;
    继承:
    什么是继承? 继承就是子承父业  就是继承的类(子类) 拥有被继承类(父类) 的所有成员。
    任何一个类都可以从另一个类继承 但派生类(子类)不能访问父类的私有成员(个人理解:你可以拥有你父亲给你留下的财产,但你并不能拥有你父亲的经历)
     
    1.继承是 派生类在基类已有的成员的基础之上,对基类进行的横向(类成员在数量上的扩充)和纵向(对某些类成员的重写 /对类成员版本的更新)的扩展
    2.是一个: 子类的实例是一个父类的实例;父类型的实例不一定是子类型的实例;可以使用父类型的变量引用子类型的实例。
    3.sealed   1.sealed关键字让类不能派生新类   
                     2.c#一个类只能有一个基类
                      3.子类的访问级别不能超过父类(可以与父类的访问级别持平或者更低)
    4.父类的实例构造器不能被子类继承
    5.成员的访问级别是以类的访问级别为上限的
    6.访问级别:    public 访问不受限制。  protected 访问限于包含类或派生自包含类的类型。private 访问限于包含类。internal 访问限于当前程序集。
     
    namespace HellOOp                                    
    {  
     class Program
       {
            static void Main(string[] args)
            {
                Car car = new Car();//声明一个Car的实例
                Vehicle vehicle = new Vehicle() ;  //声明一个Vehicle的实例
                Console.WriteLine(car is object);   //验证car是否派生自 object=>ture
                Console.WriteLine(car is Vehicle);  //验证car是否派生自 Vehicle   =>ture     
                Console.WriteLine( vehicle is object);  //验证vehicle是否派生自 object=>ture       
                Console.WriteLine(vehicle is Car);     //验证vehicle是否派生自 Car   =>false     
            }
        }
     
       class Vehicle//基类;                     
        {
    
        }
       class Car :Vehicle//继承了Vehicle类
        {
    
        }
    }
    4.父类的实例构造器不能被子类继承
    
     namespace HellOOp                                    //继承是 派生类在基类已有的成员的基础之上,对基类进行的横向(类成员在数量上的扩充)和纵向(对某些类成员的重写 /对类成员版本的更新)的扩展
    {
        class Program
        {
            static void Main(string[] args)
            {
                Vehicle vehicle = new Vehicle("11111") ;
    
                Console.WriteLine(vehicle.Owner);
                Car car = new Car("aaa");
                Console.WriteLine(car.Owner);
                car.ShowOwner();
                Console.WriteLine(vehicle.Owner);
    
            }
        }
    
        class Vehicle//基类;                     
        {
            public Vehicle(string owner)
            {
                this.Owner = owner;
    
            }
            public string Owner { get; set; }
    
        }
        class Car : Vehicle//继承了Vehicle类
        {
            public Car(string owner) : base(owner)
            {
    
            }
            public void ShowOwner()
            {
                Console.WriteLine(base.Owner);//base只能向上访问一层
            }
        }
    }
    派生类继承了基类的成员变量和成员方法。因此父类对象应在子类对象创建之前被创建。您可以在成员初始化列表中进行父类的初始化。
     
    多态性:
    继承的一个结果是派生于基类的类的方法和属性上有一定的重叠,因此可以使用相同的语法处理从同一个基类实例化的对象

  • 相关阅读:
    [Nowcoder] 六一儿童节(拼多多)
    [Nowcoder] 大整数相乘(拼多多笔试题)
    [Nowcoder] 最大乘积(拼多多笔试题)
    [Paddle学习笔记][06][图像分类-动态图]
    [Paddle学习笔记][05][对抗生成网络]
    [Paddle学习笔记][04][图像分类]
    [Paddle学习笔记][03][数字识别]
    [Paddle学习笔记][02][MNIST转换到PNG]
    [Paddle学习笔记][01][线性回归]
    [caffe学习笔记][06][使用LeNet分类输入图片]
  • 原文地址:https://www.cnblogs.com/cxh1998/p/13399575.html
Copyright © 2020-2023  润新知