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只能向上访问一层
        }
    }
}
派生类继承了基类的成员变量和成员方法。因此父类对象应在子类对象创建之前被创建。您可以在成员初始化列表中进行父类的初始化。
 
多态性:
继承的一个结果是派生于基类的类的方法和属性上有一定的重叠,因此可以使用相同的语法处理从同一个基类实例化的对象

posted @ 2020-07-29 20:55  想要隐身的我  阅读(144)  评论(0编辑  收藏  举报