zoukankan      html  css  js  c++  java
  • C#-类(九)

    类的定义
      类是描述具有相同特征与行为的事物的抽象,类内部包含类的特征和类的行为
      类支持继承
      类的定义是关键字class为标志

    类的格式
      访问标识符 class 类名
      {
        类主体
      }
      访问标识符:指定了类及其成员的访问规则。如果不指定则使用默认的标识符
      类的默认标识符为internal,而类成员的默认访问标识符为private
      类的主体:定义行为和数据,类的字段、属性、方法和事件统称为类成员


    类中函数和封装
      类的成员函数是一个在类定义中有它的定义或原型的函数。作为类的一个成员,它能在类的任何对象上操作,且能访问该对象的类的所有成员
      成员变量是对象的属性(从设计角度),且它们保持私有来实现封装
      这些变量只能使用公共成员函数来访问
      具体封装的过程参考上篇博文C#-方法(八)


    类中构造函数
      构造函数主要是用来创建对象时为对象赋初值来初始化对象。总与new运算符一起使用在创建对象的语句中
      构造函数具有和类一样的名称,但它是一个特殊的函数,同一个类里面可以有多个参数不同的构造函数,也就是函数的多态
      构造函数没有返回值,也不能用void修饰,只有访问修饰符
      每个类中都会一个构造函数,如果用户定义没有定义,编译器就会自动为该类型生成默认构造函数
      默认的构造函数没有任何参数
      构造函数目的是用于初始化类

    示例

     1 namespace 构造函数
     2 {
     3     class Animal
     4     {
     5         //构造函数
     6         public Animal(string name, string color, int speed)
     7         {
     8             this.name = name;
     9             this.color = color;
    10             this.speed = speed;
    11         }
    12 
    13         //名称
    14          private string name;
    15          public string Name
    16          {
    17             get { return name; }
    18             set { name = value; }
    19          }
    20          //颜色
    21          private string color;
    22          public string Color
    23          {
    24              get { return color; }
    25              set { color = value; }
    26         }
    27          
    28          //速度
    29          private int speed;
    30          public int Speed
    31          { 
    32               get { return speed; }
    33               set { speed = value; }
    34          }
    35 
    36         //主函数中创建类,获取构造函数中的属性
    37         static void Main(string[] args)
    38         {
    39             Animal Tiger = new Animal("BigTiger", "yellow", 20);
    40             Console.WriteLine("名字叫{0}身上的颜色是{1}行进速度为{2}", Tiger.Name, Tiger.Color, Tiger.Speed);
    41         }
    42     }   
    43 }

    结果

      

    类中析构函数
      析构函数用于释放被占用的系统资源
      析构函数的名字由符号“~”加类名组成
      析构函数只能被自动调用
      一个类只能有一个析构函数
      析构函数没有任何修饰符、没有任何参数、也不返回任何值
      析构函数不能继承或重载

     

    构造函数VS析构函数
      构造函数和析构函数是在类中说明的两种特殊的成员函数
      构造函数是在创建对象时,使用给定的值将对象初始化
      析构函数用于释放一个对象。在对象删除前,使用析构函数做一些清理工作,它与构造函数的功能正好相反

    示例

     1 using System;
     2 namespace AgeApplication
     3 {
     4     class Age
     5     {
     6         private int number;   // 线条的长度
     7         public Age()  // 构造函数
     8         {
     9             Console.WriteLine("年龄已创建");
    10         }
    11         ~Age() //析构函数
    12         {
    13             Console.WriteLine("年龄已删除");
    14         }
    15 
    16         public void setNumber(int Number)
    17         {
    18             number = Number;
    19         }
    20         public int getNumber()
    21         {
    22             return number;
    23         }
    24 
    25         static void Main(string[] args)
    26         {
    27             Age XiaoMing = new Age();
    28             // 设置年龄大小
    29             XiaoMing.setNumber(18);
    30             Console.WriteLine("小明的年龄是: {0}", XiaoMing.getNumber());
    31         }
    32     }
    33 }

    结果

     

    类的静态成员
      使用static关键字把类成员定义为静态的
      静态变量用于定义常量,因为它们的值可以通过直接调用类而不需要创建类的实例来获取
      当把一个成员函数声明为static。这样的函数就只能访问静态变量

    创建对象
      类定义对象的类型,但它不是对象本身
      对象是类的具体
      对象是基于类的具体实体,也称为类的实例
      通过使用new关键字,后跟对象将基于的类的名称,可以创建对象
      格式: 类名 对象名 = new 类名()
        例:有一个 public class Student{类主体}的类
        创建对象:Student XiaoMing = new Student();
        创建类的实例后,对象可以获得类的属性

  • 相关阅读:
    Effective Java 第三版——26. 不要使用原始类型
    Effective Java 第三版——25. 将源文件限制为单个顶级类
    Effective Java 第三版——24. 优先考虑静态成员类
    Effective Java 第三版——23. 优先使用类层次而不是标签类
    Effective Java 第三版——22. 接口仅用来定义类型
    Effective Java 第三版——21. 为后代设计接口
    Effective Java 第三版——20. 接口优于抽象类
    Effective Java 第三版——19. 如果使用继承则设计,并文档说明,否则不该使用
    Effective Java 第三版——18. 组合优于继承
    Effective Java 第三版——17. 最小化可变性
  • 原文地址:https://www.cnblogs.com/tynam/p/9615472.html
Copyright © 2011-2022 走看看