zoukankan      html  css  js  c++  java
  • 类的基本教程

    类的基本概念

    类的概述

    类是一种活动的数据结构
    在面向对象分析和设计产生前,程序员仅把程序当做指令的序列。那时的焦点在指令的组合和优化上。
    随着面向对象的出现,焦点转移到组织程序的数据和功能上。
    程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合,并被称为类。

    类是一个能存储数据执行代码数据结构。包含数据成员和函数成员。

    • 数据成员:存储与类或类的实例相关的数据。数据成员通常模拟现实世界事物的特性
    • 函数成员:执行代码。通常模拟现实世界事物的功能和操作

    类是逻辑相关的数据和函数封装,通常代表真实世界中或概念上的事物

    声明类

    类的声明定义新类的特征和成员。它并不创建类的实例,但创建了用于创建实例的模板

    • 类的名称
    • 类的成员
    • 类的特征
    关键字  类名
      ↓      ↓
    class MyExcellentClass
    {
        成员声明
    }
    类成员

    字段方法是最重要的类成员类型。
    字段是数据成员,方法是函数成员

    字段

    字段隶属于类的变量

    • 它可以是任何类型,无论预定义类型还是用户定义类型
    • 和所有变量一样,字段用于保存数据
      • 可以被写入
      • 可以被读取
    class MyClass
    {
        类型   字段名称
         ↓     ↓
        int MyField
    }
    方法

    方法是具有名称可执行代码块

    方法声明包括以下组成部分

    • 返回类型
    • 名称
    • 参数列表
    • 方法体
    class SimpleClass
    {
      返回类型      参数列表
          ↓           ↓
        void PrintNums()
        {
            Console.WriteLine("1");
        }
    }

    创建变量和类的实例

    类的声明只用于创建类的实例的模板一旦类被声明,就可以创建类的实例

    • 类是引用类型,这意味着它们要为数据引用和实际数据都申请内存
    • 数据的引用保存在一个类类型的变量中。所以,要创建类的实例,需要从声明一个类类型的变量开始。如果变量没有被初始化,它的值是未定义的

    为数据分配内存

    声明类类型的变量所分配的内存是用来保存引用的,而不是类对象实际数据。
    要为实际数据分配内存,需要使用new运算符

      • new运算符为任意指定类型的实例分配并初始化内存。它依据类型的不同从栈或堆里分配
      • 使用new运算符组成一个对象创建表达式
        • 关键字 new
        • 要分配内存的实例的类型名称
        • 成对的圆括号,可能包括参数或无参数
      • 如果内存分配给一个引用类型,则对象创建表达式返回一个引用,指向在堆中被分配并初始化的对象实例
    Dealer theDealer;    //声明引用变量
    theDealer = new Dealer();//为类对象分配内存并赋给变量

    实例成员

    声明相当于模板通过这个模板想创建多少个类的实例都可以。

    • 实例成员:类的每个实例都是不同的实体,它们有自己的一组数据成员,不同于同一类的其他实例。因为这些数据成员都和类的实例相关,所以被称为实例成员
    • 静态成员:静态成员是与类相关的成员,静态成员被加载到静态存储区,且只被创建一次,类的所有实例共享静态成员

    访问修饰符

    内部,成员间可以任意访问
    访问修饰符,指明外部程序如何访问类中的成员

    字段
        访问修饰符 类型 标识符;
    方法
        访问修饰符 返回类型 方法名()
        {
            ...
        }

    五种访问修饰符

    
    
    • 私有的(private)
    • 公有的(public)
    • 受保护的(protected)
    • 内部的(internal)
    • 受保护内部的(protected internal)
    私有访问和公用访问
    • 私有访问默认的访问级别
    • 实例的公有成员可以被程序中的其他对象访问

    class C1
    {
        int F1;            //隐式私有字段
        private int F2;    //显示私有字段
        public int F3;     //公有字段
        void DoCalc()      //隐式私有方法
        {
            ...
        }
        public int GetVal()//公用方法
        {
            ...
        }
    }

    从类的内部访问成员

    类的成员仅用其他类成员的名称就可以访问它们

    class DaysTemp
    {
        //字段
        private int High = 75;
        private int Low = 45;
        //方法
        private int GetHigh()
        {
            return High;
        }
        private int GetLow()
        {
            return Low;
        }
        public float Average()
        {
            return (GetHigh()+GetLow())/2;//访问私有方法
        }

    从类的外部访问成员

    要从类的外部访问实例成员,必须包括变量名称和成员名称,中间用.(dot-syntax notation 点运算符)分隔。

    DaysTemp myDt = new DaysTemp();  //创建类的对象
    float fValue = myDt.Average();   //从外部访问
    
    

    综合应用

    下面代码创建两个实例并把它们的引用保存在名称为t1和t2的变量中。
    这段代码示范了目前位置讨论的使用类的3种行为

      • 声明一个类
      • 创建类的实例
      • 访问类的成员(写入字段、读取字段
    class DaysTemp            //声明类
    {
        public int High,Low;  //声明实例字段
        public int Average()  //声明实例方法
        {
            return(High+Low)/2;
        }
    }
    class Program
    {
        static void Main()
        {
            //创建两个实例
            DaysTemp t1 = new DaysTemp();
            DaysTemp t2 = new DaysTemp();
            //给字段赋值
            t1.High = 76;
            t1.Low = 57;
            t2.High = 75;
            t2.Low = 53;
            //读取字段值
            //调用实例方法
            Console.WriteLine("t1:{0},{1},{2}",t1.High,t1.Low,t1.Average());
            Console.WriteLine("t2:{0},{1},{2}",t2.High,t2.Low,t2.Average());
        }
    }
     
     
    
    
     
    
    
  • 相关阅读:
    css实现强制不换行/自动换行/强制换行
    JavaScript模仿语言包式的简繁转换功能插件
    全国DNS服务器IP地址【电信、网通、铁通】
    删除隐藏网卡(本机IP地址被占用)4个方法
    javascript自定义insertAfter()函数
    HTTP协议header头域
    使用css模拟vista毛玻璃效果
    GRUB4DOS加载ISO启动光盘完美解决方案
    javascript在IE和Firefox中兼容性问题
    XML格式的字符串与DataSet之间的转换
  • 原文地址:https://www.cnblogs.com/676210hyp/p/8424443.html
Copyright © 2011-2022 走看看