• 面向对象 封装、继承、多态


    访问修饰符:(4种)

    pubulc:公共的,只要引用了命名空间,就可以随意进行访问
    private:私有的,只有当前类内部才可以访问

    internal:内部的,当前程序集内可以访问,程序集就是命名空间,此修饰符是默认的
    protected:被保护的,当前类和它的子类才可以访问

    封装:

    基本结构

    private int _Ids;   -- 私有的成员变量

    public int Ids   -- 属性,封装基本结构
    {
     get{ return _Ids; }
     set{ _Ids = value; }
    }

    ①一个成员变量可以有很多个属性

    ②属性返回类型可以是任意类型,不是必须要与成员变量类型相同

    ③属性可以是只读的,也可以是只写的,也可以两者都有

    创建的类:

    public class Class1  //创建类
        {

            private int _id;  //成员变量
            private string _name;
            private DateTime _birthday;
            private decimal _score;

            public int id 
            {
                get { return _id; }
                set
                {
                    if (value > 0)
                    {
                        _id = value;
                    }
                    else
                    {
                        _id = 0;
                    }
                }
            }

    主函数中:

    Class1 cc = new Class1();  //实例化      
    cc.id = 5;
    Console.WriteLine(cc.id);

    Console.ReadLine();

    继承: 

    子类可以继承父类所有的public方法和属性

    父类不可以调用子类的方法和属性,哪怕是public的


    子类可以转换成父类,转换成的这个父类也可以转换回相应子类

    子类转换成父类,这个父类不可以转换成其它的子类

    Plane这个类是Fly的派生类,
    Plane这个类派生自Fly

    Fly类:

    public class Fly
    {
      public string Fly1()
      {
        eturn "我可以飞行!";
      }

    }

    Plane继承于Fly:

    public class Plane : Fly
    {
      public string Name()
      {
        return "我叫飞机!";
      }
    }

    程序主函数中:

    Plane p= new Plane();  //实例化

    Console.writeLine( p.Fly1());  //飞机继承于飞行类

    Console.ReadLine();

    多态:

    龙生九子,各有不同

    同样都是继承了同一个父类,但是父类中的方法并不使用任何一个子类,那么在这就需要子类重新编写这个方法的主体

    1、需要父类同意子类可以重新编写自己的方法
    virtual - 虚方法
    2、子类只能重写父类允许重写的方法,只能重写虚方法
    override - 重写覆盖虚方法

    所有的类都可以当做父类,都可以有虚方法

    抽象类:abstract
    它就是为了被继承而出现的

    普通的类中所有的方法都变成虚方法,没有人用最基础的方法,全部都需要重写,那么就不需要那么费劲把普通类中的方法主体都写完,而是,直接定义成抽象类,并且都写成抽象方法。

    只声明方法的名称和返回类型,具体方法主体是什么,继承过去以后自己去实现。

    抽象方法一定是在抽象类中

  • 相关阅读:
    Java代理(jdk静态代理、动态代理和cglib动态代理)
    Hive安装
    Spark 集群安装
    Flume 远程写HDFS
    Spark Idea Maven 开发环境搭建
    oracle 通不过网络的原因
    oracle一些基本问题
    linux-redhat配置yum源
    liunx虚拟机网络连接
    redhat安装jdk、tomcat、mysql
  • 原文地址:https://www.cnblogs.com/hcx999/p/5852345.html
Copyright © 2020-2023  润新知