c#基础-面向对象-三大特性

        c# 属于面向对象语言的一种,是一类以对象作为 基本程序结构单位的程序设计语言。指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。

        而三大特性指的是在程序编程中,编写对象时遵守的三大原则(封装、继承、多态)。以达到可拓展、可重用、可维护的目的。

目录

1.对象(类):

2.封装:

状态(字段):

行为(方法):

3.继承:

父类(基类):

子类(派生类):

分类:

4.多态:

向上转型:

向下转型:


1.对象(类):

将某类人或物体称为某类对象,此类对象具有相似的行为或相似的特点。所以有句:“物以类聚,人以群分”,可以解释对象类的概念。

2.封装:

封装指的是将对象的状态和行为良好的编写在本类对象中。不能将一个小狗的尾巴长度写在一个人的对象中,不能将一个人两条腿走路的行为写在小猫对象中。同时可以修改状态行为的访问权限修饰符,关闭外部对内部成员的调用,降低其他对象与本对象的关联耦合度。

状态(字段):

一个对象有他的名字、年龄或其他,此称为该对象的字段,用于描述或记录对象的状态。

行为(方法):

一个对象吃饭、喝水或其他,此动作称为该对象的行为,用于执行对象的行为逻辑。

3.继承:

在编程中可以通过继承将一类对象x的行为状态传给另一类对象y,y就无需再次编写行为状态,可以通过调用a实现继承来的逻辑,子类可以通过继承多个父类以达到多个行为拓展的目的。

子类可以继承单个父类,父类也可以派生多个子类;或可选择单继承;或父类只担虚名没有具体的行为给子类继承(抽象类);或者有的类不允许作为父类派生也是可以的(密封类)。

在分类概念中:

  1. 将生物类分为人类和动物类
  2. 动物类可以分为犬类和马类

父类(基类)

当前类对象可以分为另外其他分类对象,当前类称为父类或基类(基本的类);父类可以选择将自己的类成员继承给子类,使得子类可以拥有父类的行为状态。

子类(派生类)

由父类分出来的其他类称为父类的子类或派生类;子类拥有了父类的行为状态,达到了代码的复用性,减少重复代码。子类可以在继承中额外增加子类自己的行为状态,将行为描述的更细致。

分类:

而分类时的分类原则就是继承的体现:父类a有他自己的状态和行为,子类b通过父类a派生同样拥有了父类a的行为状态,若子类b再次作为父类b派生其他子类c,那么c就同时拥有了a、b的行为状态。

相反 父类是无法得到子类自己的行为状态的。

4.多态:

多态是在继承中一起体现的。指在继承关系下,使用不同的类型对象调用同一方法却能实现不一样的操作。在多态的使用下,可以将类型转换增加代码的灵活性和抽象性

向上转型:

从笼统角度来讲,一个子类对象 既是子类类型 又是父类类型。

子类对象可以选择重写或重载继承来的行为方法。若以子类类型去调用方法,调用的是子类自己的方法,若以子类的父类类型去调用方法,调用的是父类中的方法。子类的对象使用父类类型这一操作就称为向上转型。

向下转型:

父类类型的对象是无法得到子类里的行为状态的,但在有些情况下,已经提前将已知子类对象向上转型为父类对象时,此父类是可以通过关键字 is 判断当前父类对象原本是否是某子类类型,再通过 关键字as 将父类对象转向子类对象,此操作称为向下转型。

using System;

namespace CCCC
{
    class Program
    {
        static void Main(string[] args)
        {
            Animal tAni1 = new Animal();//一个动物类型的对象
            tAni1.Sleep();//输出:动物睡觉
            Console.WriteLine(tAni1.GetType());//类型为 Animal
            Console.WriteLine(tAni1 is Horse);//tAni1不是小马类型


            Dog tDog1=new Dog();//一个小狗类型的对象
            tDog1.Sleep();//调用了继承于Animal的方法 输出:动物睡觉
            Console.WriteLine(tDog1.GetType());//类型为 Dog

            Horse tHorse1=new Horse();
            tHorse1.Sleep();//调用了继承于Animal的方法 并修改成子类行为的方法 小马睡觉
            Console.WriteLine(tHorse1.GetType());//类型为 Horse
            Console.WriteLine(tHorse1 is Animal);//tHorse1 同时也是动物类型

            Animal tAni2=new Horse();//以Animal的类型 创建一个Horse实例的对象
            tAni2.Sleep();//调用了继承于Animal的方法 并修改成子类行为的方法 小马睡觉
            Console.WriteLine(tAni2.GetType());//类型为 Horse
            Console.WriteLine(tAni2 is Animal);//tAni2 同时也是动物类型
            Console.WriteLine(tAni2 is Horse);//tAni2 同时也是小马类型
        }
    }

    //动物类
    class Animal
    {

        public virtual void Sleep()//方法 行为
        {
            Console.WriteLine("动物睡觉");
        }
    }
    //小狗 继承动物
    class Dog : Animal
    {
       
    }
    //小马 继承动物
    class Horse : Animal
    {
        public override void Sleep()//方法 行为
        {
            Console.WriteLine("小马睡觉");
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值