封装,继承,多态,接口的使用

封装,继承,多态,接口的使用

父类—交通工具

   /*  封装:把客观事物封装成类,并将类内部的实现隐藏,以保证数据的完整性
     *  在面向对象编程中,应更多地定义私有数据字段
     *  继承:一个类可以继承另一个已有的类,被继承的类称为基类(父类);
     *            继承的类称为派生类(子类),子类将获得基类除构造函数和析构函数以外的所有成员。
     *  有时候我们不希望创建基类的实例,因为它是一个抽象概念,可以使用abstract
     *  关键字abstract 抽象类,以防止代码直接创建父类的实例         
     *            
     */
    public abstract  class Vehicle
    {

        /// <summary>
        /// 汽车名字
        /// </summary>
        public string VehicleName { get; set; }

        /// <summary>
        /// 可携带人数
        /// </summary>
        private int peopleLoad;  //私有字段

        public int PeopleLoad    //封装即是利用属性将字段封装起来,外部数据只能对属性进行操作
        {
            get { return peopleLoad; }
            set
            {
                if (value <0 || value >50)
                {
                    throw (new ArgumentOutOfRangeException("CarryPeople", value, "载客人数应在0-50之间"));
                }
                peopleLoad = value;
            }
        }

        //构造函数
        public Vehicle() { }

        //构造函数
        public Vehicle (string vehicleName,int peopleLoad)
        {
            this.PeopleLoad = peopleLoad;
            this.VehicleName = vehicleName;
        }

        public void CarryPeople()
        {
            Console.WriteLine(VehicleName + "可以承载" + peopleLoad + "人!");
        }

        public virtual  void EnergySources() //使用virtual,让派生类可以重写
        {
            Console.WriteLine(VehicleName + "使用什么能源?");
        }
    }

子类—公交车

public class Bus:Vehicle ,IReful
    {
        /// <summary>
        /// 子类(公交车),重写父类使用能源方法
        /// </summary>
        public override void EnergySources()
        {
            base.EnergySources();//通过base语句调用父类的方法
            Console.WriteLine(VehicleName + "使用92#汽油!");
        }

        public void Reful()//实现接口方法
        {
            Console.WriteLine(VehicleName + "是运营车辆");
        }
    }

子类-----电动车

 public class Electrocar:Vehicle 
    {
        /// <summary>
        /// 子类(电动汽车),重写父类使用能源方法
        /// </summary>
        public override void EnergySources()
        {
            base.EnergySources();//通过base语句调用父类的方法
            Console.WriteLine(VehicleName + "使用充电桩补充能源");
        }

        //构造函数
        public Electrocar(string vehicleName, int peopleLoad)
        {
            this.VehicleName = vehicleName;
            this.PeopleLoad = peopleLoad;
        }
    }

接口—运营

    /*  接口:通过接口,你可以对方法进行统一管理,避免了在每种类型中重复定义这些方法
     *  接口使用interface关键字进行定义
     *  如果有类想继承该接口,必须实现接口中定义的所有方法
     *  
     */
    interface IReful
    {
        void Reful();

    }

使用

        class Program
    {
        static void Main(string[] args)
        {
            //子类不能继承父类的构造函数
            //Bus bus = new Bus("公交车", 46);

            Bus bus = new Bus();
            bus.VehicleName = "公交车";
            bus.PeopleLoad  = 46;
            bus.CarryPeople();
            bus.EnergySources();
            bus.Reful();
            Console.WriteLine("---------------------------------------");
            //子类可以有自己的构造函数
            Taxi taxi = new Taxi("出租车", 5);
            taxi.CarryPeople();
            taxi.EnergySources();
            taxi.Reful();
            Console.WriteLine("---------------------------------------");
            Electrocar electrocar = new Electrocar("电动汽车", 5);
            electrocar.CarryPeople();
            electrocar.EnergySources();


            Console.ReadLine();

        }
    }

运行结果

公交车可以承载46人!
公交车使用什么能源?
公交车使用92#汽油!
公交车是运营车辆
---------------------------------------
出租车可以承载5人!
出租车使用什么能源?
出租车使用95#汽油
出租车是运营车辆
---------------------------------------
电动汽车可以承载5人!
电动汽车使用什么能源?
电动汽车使用充电桩补充能源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程思想,它通过将数据和操作数据的方法组织在一起,以对象的形式来描述现实世界中的事物。面向对象编程的四个基本概念是封装继承多态接口。 1. 封装(Encapsulation):封装是将数据和操作数据的方法封装在一起,形成一个独立的实体。这样可以隐藏内部的实现细节,只暴露对外提供的接口,提高代码的可维护性和重用性。通过封装,对象对外部只暴露必要的信息,同时可以对内部实现进行修改,而不会影响外部的使用。 2. 继承(Inheritance):继承是指一个类(子类)可以从另一个类(父类)继承属性和方法。子类可以复用父类的代码,并且可以在其基础上进行扩展或修改。继承可以实现代码的重用,同时也能够建立类之间的关系,形成类的层次结构。 3. 多态(Polymorphism):多态是指同一个方法可以根据不同的对象产生不同的行为。多态通过继承和方法重写来实现,可以提高代码的灵活性和可扩展性。通过多态,可以在不改变方法的情况下,根据对象的实际类型来动态调用不同的方法实现。 4. 接口(Interface):接口定义了一组方法的规范,实现了接口的类必须实现接口中定义的方法。接口可以用来实现类之间的解耦和增加代码的可扩展性。通过接口,可以定义类之间的约定,使得不同的类可以进行交互和通信。 这些概念是面向对象编程的基础,它们可以帮助开发者组织和管理复杂的代码,提高代码的可读性、可维护性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值