首页 > 代码库 > 007.类、构造函数
007.类、构造函数
1、类和对象
对象:具体存在的,可以被描述的实体 属性和行为
类:具有共同属性和相同行为的多个对象的抽象
对象:具体的 实体
类:抽象的 概念
类是对象的抽象 对象是类得具体实例
2、创建和使用类
访问修饰符 [可选修饰符]class 类名
{
//类成员
//字段 》 数据
//属性 》 对字段的封装
//索引器 》 对集合类型字段的封装
//方法 》 对象的特殊行为
//事件 》 行为
//构造函数 》 初始化
}
字段:访问修饰符 数据类型 变量名;
使用:
a.创建对象
类名 对象名=new 类名();//相当于隐士创建了构造函数
b.给字段或者属性赋值
对象名.字段=值
c.调用方法
对象名.方法();
类的成员变量(字段)是默认初始化的。
3.构造函数
作用:创建对象并初始化
用来描述对象的创建过程
定义类的时候CLR会提供默认的构造函数(无参,方法体无语句);
定义构造函数:public Student(){}
访问修饰符 类名(参数列表)
{
}
this:当前实例(对象)
*构造函数 注:
*构造函数(构造方法)声明在类内部
*构造函数每次创建对象是被隐式调用
*构造函数常常用于初始化类成员
*构造函数与类同名
*构造函数不能声明返回值类型
*构造函数可以包含参数,参数一般是创建对象实力的前提条件
*每个类都必须至少有一个构造函数,若不提供,编译器自动生成一个无参构造函数
*在类中定义了构造函数,默认的构造函数就不再提供。
有参构造函数:
*如果类中定义了构造函数,建议添加无参构造函数
这就是构造函数的重载
4.修饰符
访问修饰符
public:公有的 类本身或者其他类
internal:程序集内可用
protected:受保护的 自身和子类可用
private:私有的 类自身
partial:分部类 在不同文件下创建两个类名相同的类在编译器编译时两个类都会被执行,编译成一个类
5.static
static成员:
在其他类中调用,用类名调用 类名.字段 类名.方法
在当前类中,实例方法和静态方法都可以直接调用
实例成员:
在其他类中调用,用对象调用 对象.字段 对象.方法
在当前类中,实例方法内直接调用 静态方法内 对象调用
注:
***方法或者字段写成static静态类型,在Main函数中可以用(类名.方法/类名.字段)的方式直接调用
***如果定义方法或者字段不加static 在Main函数中调用必须要先声明对象(类名 对象名=new 类名();) 然后才可以用(对象.方法/对象.字段)的方式调用,构造函数的字段也同样
静态类:
public static class()
{
//特征:
//所有成员必须是静态的 常量 静态字段 静态方法
//不能实例化(不能创建对象)
//不能被继承(不能创建子类)
}
静态构造函数:
用于初始化类的静态成员的
不能用访问修饰符,不能有任何参数
只被执行一次,不管创建多少个对象,只在类的第一个对象创建之前执行
关于static的练习:
1.创建汽车的类和构造函数
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 类和构造函数
{
class Car
{
public string type;
public int price;
public static int milestone;
public Car()
{
type = "保时捷911";
price = 198;
milestone = 20;
}
public static void Start()
{
Car st=new Car();
Console.WriteLine("{0}售价为{1},行驶里程{2},正在启动!", st.type, st.price,milestone);
}
public void Stop()
{
Console.WriteLine("{0}售价为{1},行驶里程{2},正在停止!", type, price, milestone);//在当前类中,实例方法内直接调用 静态方法内 对象调用
}
}
}
2.在Main中调用静态方法和非静态方法的方式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 类和构造函数
{
class Program
{
static void Main(string[] args)
{
Car.Start();//静态方法在其他类中调用可以直接 类名.方法名() 调用
Car ct = new Car();
ct.Stop();//非静态方法在其他类中调用需要先声明类的对象,用 对象名.方法名() 调用
Console.ReadKey();
}
}
}
007.类、构造函数