1.什么是类什么是对象

1.1 类和对象

  • 面向对象:一种软件开发的思想,指导程序员如何分析、解决问题

  • 是一个抽象的概念,即位生活中的“类别”

  • 对象 是类的具体实例,即归属于某个类别的“个体”。

  • 例如:学生是一个类,表示一种类型,“八戒同学”则是一个对象。

  • 名词类型的共性,作为数据成员。

  • 动词类型的共性,作为方法成员。

创建类

语法

访问级别 class 类名
{
    类成员...
}
  • 通常每个类都在一个独立的c#源文件中
  • 创建新的类意味着在当前项目中产生了一种新的数据类型

创建对象

语法

类名 引用名;
引用名 = new 构造函数(参数列表);   
  • 创建对象的过程也称为“实例化”

2.构造函数

2.1 定义

提供了创建对象的方式,初始化类数据成员的特殊方法。

语法

[访问修饰符] [可选修饰符] 类名([参数列表])
{
    初始化...
}

2.2特点

  • 与类同名
  • 没有返回值,也不能写void
  • 不能被直接调用,必须通过new运算符在创建对象时才会自动调用
  • 每个类都必须至少有一个构造函数,若不提供,编译器自动生成一个无参数构造函数
  • 如果程序员定义了构造函数,则编译器不会再提供。

3.访问修饰符

  • 用于修饰类及类成员的访问可见范围
  • public:所属类成员及非所属类的成员都可以访问
  • private:只有所属类的成员才可以访问。[类成员的默认级别]

4.this关键字

  • 表示当前对象的引用
  • 访问当前类成员时,使用this关键字,可以提高代码的可读性;在没有歧义的情况下,也可以省略

5.属性

属性是一种类的成员,它的实现类似函数,访问类似字段。它的作用是提供一种灵活和安全的机制来访问,修改私有字段。所以属性必须依赖于字段

private int dd;  
public int dd  
{  
    get{ return xx*3;}  
    set{ xx = value/3;}  
}  

没有set的属性是一种只读属性,没有get的访问器是一种只写属性。

(1) get访问器用来返回字段或者计算 并返回字段,它必须以return或者throw终结。

private string name; 
public string Name 
{ 
    get 
    { 
        return name != null ? name : "NA"; 
    } 
} 

(2) set访问器类似返回类型为void的函数,使用value的隐式参数

private string name;  // the name field 
public string Name    // the Name property 
{ 
    get 
    { 
       return name; 
     } 
     set 
     { 
        name = value; 
     } 
}

6.类结构

语法

访问级别 class 类名
{
    字段:存储数据
    属性:保护字段
    构造函数:提供创建对象的方式,初始化类的数据成员
    方法:向类的外部提供某种功能
}

7.Static 静态

static静态的,不变的,在某个类中只有一个,不会因实例化对象的不同而不同。

static可以修饰类、字段、属性、方法等。如一个方法前加上static修饰后要对其进行调用可以直接通过类名点出来,不用再对类进行实例化。

7.1 静态成员变量

含义

  • 使用static关键词修饰的成员变量

静态成员变量和实例成员变量的区别

  • 静态成员变量属于类,类被加载时初始化,且只有一份。

  • 实例成员变量属于对象,在每个对象被创建时初始化,每个对象一份

特点

  • 存在优先于对象
  • 被所有对象所共享
  • 常驻内存

7.2 静态构造函数

  • 初始化类的静态数据成员

  • 仅在类被加载时执行一次

  • 不允许使用访问修饰符

7.3 静态方法

  • 通过引用调用实例方法时,会隐式的传递对象引用,以便在方法内部可以正确方位该对象成员变量。
  • 通过类调用静态方法时,因为没有具体对象,所以在static方法中不能访问实例成员。

7.4 静态类

  • 使用static关键字修饰的类
  • 不能实例化,只能包含静态成员
  • 静态类不能被继承,但是静态方法、属性都可以被继承

7.5 适用性

  • 利:单独空间存储,所有对象共享,可直接被类名调用
  • 弊:静态方法中只能访问静态成员,共享数据被多个对象访问会出现并发。

适用场合

  1. 所有对象需要共享的数据
  2. 在没有对象前就要访问成员
  3. 工具类适合做静态类(常用,不需要过多数据)

8.继承

子类可以使用父类成员

声明子类型的引用 指向 子类型的对象

Student stu1 =new Student();
stu1.Name="颜回";

Teacher techer01 = new Techer();

声明父类型的引用 指向 父类的对象 只能使用父类成员

Person porson1 = new Person();

声明父类型的引用指向子类的对象,只能使用父类成员

Person porson1 = new Student();

发表评论

邮箱地址不会被公开。 必填项已用*标注