C#面向对象课程 类与对象,方法重载,类的静态成员,命名空间和类库12月22日

一、类是面向对象课程的基本单元。

在类的里面可以直接定义字段(成员变量),也可以定义方法(函数)。

例如:

这里的public是修饰符,修饰符的作用是用来限定它的可访问范围。

两个同范围(同一个类中,或者父子类中)两个同名但参数类型不同或者参数个数不同的方法互相间构成重载关系。

两个构成重载关系的方法(函数)必须满足以下条件:

(1)方法(函数)名相同;

(2)参数类型不同,或参数个数不同。这里需要注意的是,函数返回值类型的不同不是函数重载的判断条件。

二、静态成员

  属性、方法和字段等成员是对象实例所特有的,即改变一个对象实例的这些成员不影响其他的实例中的这些成员。除此之外,还有一种静态成员(也称为共享成员),例如静态方法、静态属性或静态字段。静态成员可以在类的实例之间共享,所以它们可以看作是类的全局对象。静态属性和静态字段可以访问独立于任何对象实例的数据,静态方法可以执行与对象类型相关、但不是特定实例的命令,在使用静态成员时,甚至不需要实例化类型的对象。例如,前画使用的Console.WriteLine()方法就是静态的。

实例成员与静态成员的访问规则:

·位于同一类的实例方法可直接相互调用。

·实例字段和静态字段可以被同一类的所有实例方法直接访问。

·静态方法只能直接访问静态字段。

三、构造函数

  所有的对象都有一个默认的构造函数,该函数没有参数,与类本身有相同的名称。一个类定义可以包含几个构造函数,它们有不同的签名,代码可以使用这些签名实例化对象。带有参数的构造函数通常用于给存储在对象中的数据提供初始值。

  在C#中,构造函数用new关键字来调用。例如,可以用下面的方式实例化一个CupOfCoffee对象:

CupOfCoffee myCup = new CupOfCoffee();

  对象还可以用非默认的构造函数来创建。与默认的构造函数一样,非默认的构造函数与类同名,但它们还带有参数,例如:

CupOfCoffee myCup = new CupOfCoffee(“Blue Mountain”);

  构造函数与字段、属性和方法一样,可以是公共或私有的。在类外部的代码不能使用私有构造函数实例化对象,而必须使用公共构造函数。—些类没有公共的构造函数,外部的代码就不可能实例化它们。

四、命名空间与类库

  命名空间可以看成是类的“容器”,它可以包含多个类,一般引用方法就是在源代码开头使用using语句。命名空间可以嵌套,

声明方法:最外围命名空间  内层命名空间.类名 自定义名 = new 最外围命名空间  内层命名空间.类名();

  类库相当于一个程序集——为了提高软件开发的效率,人们在整个软件开发过程中大量应用了软件工程的模块化原则,重用已有模块,再开发部分新模块,最后将新旧模块组装起来。

类库的建立方法:

(1)在解决方案上单击右键,按图示点击"新建项目……"

(2)选择类库,给类库一个名字,选择好保存位置,点击确定

(3)建立成功后在类库中写上所需要的方法,然后进行引用——1、在引用中添加类库   2、在代码中写上using语句。

五、区分类库项目、程序集、命名空间这三者的方法:

(1)每个类库项目编译之后,将会生成一个程序集

(2)类库项目中可以拥有多个类,这些类可属于不同的命名空间

(3)不同的类库项目可以定义相同的命名空间

时间: 2024-10-13 18:30:52

C#面向对象课程 类与对象,方法重载,类的静态成员,命名空间和类库12月22日的相关文章

js面向对象编程:如何实现方法重载

js中如何实现方法重载?这涉及到三个问题 1同名函数的调用问题 2函数中特殊的参数arguments 3如何利用arguments实现方法重载 1同名函数的调用问题 都知道在js中如果存在多个名称相同的函数,则调用实际每次都只使用最后一个,js其实是没有重载的,也就是说,如果定义了多个同名的函数,单参数不一样,在调用时,js不管参数个数,只管前后顺序 例如: function test1(arg1) { alert("参数1:"+arg1); } function test1(arg1

Java编译时根据调用该方法的类或对象所属的类决定

class Base{ ????int x = 1; ????static int y = 2; } class Subclass extends Base{ ????int x = 4; ????int y = 5; } public class Test02{ ????public static void main(String[] args){ ????????Subclass s = new Subclass(); ????????System.out.println(s.x+" &qu

Python面向对象 --- 新旧式类、私有方法、类属性和类方法、静态方法

一.Python面向对象中的新旧式类 1)新式类(推荐使用):在定义类时,类后边括号里要继承基类(object).在python3.x中若没有指定父类,会默认使用的是object作为基类:在python2.x中,若没指定父类,则不会以object作为基类. 2)旧式类(经典类):在定义类时,类后边括号中不用继承object类,甚至不用括号. 3)dir方法是用来查看类的内置方法. 二.私有方法和属性 1)私有属性是对象不希望公开的属性:私有方法是对象不希望公开的方法.在定义私有属性和方法时,在属

Object-c 类、对象方法

// //  main.m //  firestMethod2 // //  Created by AleuxQ on 16/3/14. //  Copyright © 2016年 AleuxQ. All rights reserved. // #import <Foundation/Foundation.h> /* 事物名称:iphone 属性:型号.cpu,尺寸,颜色 行为:打电话 发短信,上网 */ //1.编写类的申明 //###############################

OC类与对象实例化,类之间的方法调用小题目

两个OC类与对象实例化题目 要求: * 类名.属性名.属性类型.方法名.方法参数.方法返回值自拟 * 自己写main函数测试设计是否合理 /* 1.设计一个"狗"类 1> 属性 * 颜色 * 速度(单位是m/s) * 性别 * 体重(单位是kg) 2> 行为 * 吃:每吃一次,体重增加0.5kg,输出吃完后的体重 * 吠(叫):输出所有的属性 * 跑:每跑一次,体重减少0.5kg,输出速度和跑完后的体重 * 比较颜色:跟别的狗比较颜色,如果一样,返回YES,不一样,返回NO

OC 类的继承 方法重载重写

一.类的继承 Objective-c中类的继承与C++类似,不同的是Objective-c不支持多重继承,一个类只能有一个父类,单继承使Objective-c的继承关系很简单,易于管理程序.Objective-c中所有类的父类是NSObject. Objective-c中类的继承例子: @interface Person: NSObject { NSString* name; int age; } - (NSString*) name; - (int) age; - (void) setName

廖雪峰Java2面向对象编程-2数据封装-1方法重载

方法重载 方法重载Overload是指:多个方法的方法名相同,但各自的参数不同 参数的个数不同 参数的类型不同 参数位置不同 方法返回值类型通常都是相同的 目的:相同功能的方法使用同一名字,便于调用 如以indexOf()为例 public static void main(String[] args) { String s = "Test"; int n1 = s.indexOf('e');//返回字符的索引 int n2 = s.indexOf("st");//

js面向对象编程:怎样实现方法重载

js中怎样实现方法重载?这涉及到三个问题 1同名函数的调用问题 2函数中特殊的參数arguments 3怎样利用arguments实现方法重载 1同名函数的调用问题 都知道在js中假设存在多个名称同样的函数,则调用实际每次都仅仅使用最后一个,js事实上是没有重载的.也就是说.假设定义了多个同名的函数,单參数不一样,在调用时,js无论參数个数,仅仅管前后顺序 比如: function test1(arg1) { alert("參数1:"+arg1); } function test1(a

2017-4-16 多态 构造函数 方法重载 静态方法和静态成员

1. 虚方法:virtual 重写:override 2.抽象类:abstract 出来就是当亲爹的,不能被实例化 方法被重写的时候需要override,抽象方法一定在抽象类中,但抽象类中不一定只有抽象方法, 如果要调用抽象类中的普通方法,需要子类继承后在实例化中调用 格式:public  abstract  class Eat(){ //抽象类 public abstract  string eat(): //抽象方法不能有函数体 } 继承的时候:public  class Man:Eat{