面向对象方法的特性:(抽象,封装,继承,多态性)

来源:互联网 发布:娱乐栏目名称有趣 知乎 编辑:程序博客网 时间:2024/05/16 23:02

面向对象方法的特性:

(1)现实建模(抽象):

抽象提取一个类的共性(仅抽取相关的信息)
(2)轻松更改(封装):大多以类作为数据封装的基本单位

封装隐藏实现细节,对外只提供访问接口(保护隐私)

可以通过访问修饰符(Access Specifier,也叫访问区分符)定义类成员的可见范围,从而实现封装

eg:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace 例8_14类的封装
{
    class Program
    {
        static void Main(string[] args)
        {
            Computer mingri = new Computer();
        again:
            Console.WriteLine("请输入操作指令:");
            string str = Console.ReadLine();
            mingri.Open(str);
            Console.WriteLine("是否继续操作?");
            string isoperate = Console.ReadLine();
            if (isoperate == "true")
                goto again;
            Console.ReadLine();
        }
    }
    class Computer
    {
        public void Open(string str)
        {
            if (str == "启动")
            {
                string p;
                while (true)
                {
                    Console.WriteLine("请输入Power!");
                    p = Console.ReadLine();
                    if (p == "Power")
                    {
                        Console.WriteLine("电脑已启动!");
                        break;
                    }
                    else
                    {
                        Console.WriteLine("错误的指令,无法开启电脑,请重新输入!");
                    }
                }
            }
            else
            {
                Console.WriteLine("正在关闭电脑,请稍后!");
            }
        }
    }
}

修饰符说明
public本类以及其他类都可以访问,本类对象以及其他类对象都可以访问
private只有本类自己才能访问,即使该类的对象也不能访问
protected只有本类及其子类可以访问,即使本类和子类的对象也不能访问
internal 当前程序集(通常表现为一个.exe或.dll文件)中的类都可以访问
protected  
internal当前程序集中的类,以及从当前程序集中派生的其他程序集子类


(3)可重用性(继承):

eg:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace 例8_15类的继承
{
    class Program
    {
        static void Main(string[] args)
        {
            Fruit fruit = new Fruit("水果");
            Apple apple = new Apple("苹果");
            fruit.Color = "无";
            apple.Color = "绿色";
            fruit.Information();
            apple.Information();
            Console.ReadLine();
        }
    }
    class Fruit
    {
        string name;
        string color;
        public Fruit(string str)
        {
            name = str;
        }
        public string Color
        {
            set { color = value; }
        }
        public void Information()
        {
            Console.WriteLine("{0} 颜色:{1}",name,color);
        }
    }
    class Apple : Fruit
    {
        string name;
        //string color;
        public Apple(string str)   //定义构造函数为name字段赋值
            : base(str)
        {
            name = str;
        }
    }
}
(4)以不同的形式存在(多态性):

eg:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace 例8_16.类的多态
{
    class Program
    {
        static void Main(string[] args)
        {
            Vehicle vehicle = new Vehicle();
            Train train = new Train();
            Car car = new Car();
            vehicle.Name = "交通工具";
            train.Name = "火车";
            car.Name = "汽车";
            vehicle.Move();
            train.Move();
            car.Move();
            Console.ReadLine();
        }
    }
    class Vehicle
    {
        string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public virtual void Move()
        {
            Console.WriteLine("{0}都可以移动",this.Name);
        }
    }
    class Train : Vehicle
    {
        public override void Move()
        {
            Console.WriteLine("{0}在铁轨上行驶",this.Name);
        }
    }
    class Car : Vehicle
    {
        public override void Move()
        {
            Console.WriteLine("{0}在公路上行驶",this.Name);
        }
    }
}

0 0
原创粉丝点击