C#编程基础(下)第一课—扩展内容1:C#中类的定义与语法、类的属性、方法、对象
知识点:C#中类的定义与语法、类的属性、方法、对象
1、C#中类、对象、属性、方法之间的关系
- 对象:现实世界中的实体(世间万物皆对象)
- 类:具有相似属性和方法的对象的集合
- 对象的三要素:属性(对象是什么)、方法(对象能做什么)、事件(对象如何响应)
- 面向对象程序设计的特点:封装 继承 多态
相互关系:类是对象的抽象,对象是类的实例,类是一种抽象的分类,对象则是具体事物。
举例思考:如如果车是一个类,某个人的一辆奔驰车就是一个对象,车的颜色质量就是它的属性,启动、停止这些动作则可以定义为车的方法。
2、类的定义和语法
2.1 类的定义
当你定义一个类时,你定义了一个数据类型的蓝图。这实际上并没有定义任何的数据,但它定义了类的名称意味着什么,也就是说,类的对象由什么组成及在这个对象上可执行什么操作。对象是类的实例。构成类的方法和变量成为类的成员。
语法:类的定义是以关键字 class 开始,后跟类的名称。类的主体,包含在一对花括号内。下面是类定义的一般形式:
[code] [访问修饰符] class 类名 { //类的主体(包含属性和方法的声明) }
访问修饰符:指定了对类及其成员的访问规则。如果没有指定,则使用默认的访问标识符。类的默认访问标识符是 internal(可访问域定义范围内),成员的默认访问标识符是 private。
class:是定义类的关键字,本身就是类的意思。
类名:类名由我们定义,起名字需要遵守一些规则。(类名称首字母记着要大写,多个单词则各个首字母大写。)
类的主体:大括号中间就是属性和方法的声明了。
2.2 类的成员(类的组成)
1)类中的数据和函数都称为类的成员。类的成员可以分为两类:
- 类本身所声明的。
- 从基类中继承来的。
如果在类声明中没有指定基类,则该类将继承System.Object类的所有成员。
2)类的成员类别:
注意:C#中的类成员可以是任意类型,包括数组和集合。英文中 “字段”是英文单词“Field”,有时会被翻译成“域”,和“字段”是同一概念。
3)类的成员的访问级别
- public:声明为公有成员,访问不受限制。公有成员提供了类的外部界面,允许类的使用者从外部进行访问。
- protected:声明为受保护成员,只能访问包含类或从包含类派生的类。受保护成员对于外界是隐藏的。
- internal:声明为内部成员,只能访问当前程序集。
- protected internal:声明为受保护的内部成员,只能访问当前程序集或从包含类派生的类。
- private:声明为私有成员,只有该类中的成员可以访问。如果在声明中没有设置成员的访问修饰符,成员会被默认为private。
2.3 类中属性的定义
属性在类中用变量来表示,我们也可以称其为:成员变量。定义方法很简单,就是我们定义变量的方法。
如,在User类中定义两个属性
[code]public class User { public static string userName; //用户名 public static string userType; //用户类型 }
2.4 类中方法的定义
[code]访问修饰符 返回类型 方法名(参数列表) { // 方法的主体… }
总结:定义类的三个步骤
①定义类名
②编写类的字段
③编写类的方法
2.5 对象的创建和使用
类是概念模型,对象是实际存在的实体,具体的工作还是需要对象来完成,那么如何来创建对象呢?
(1)创建对象的语法:
类名 对象名=new 类名();
这里有一个示例:Book center=new UserBook();
说明一下:在创建类的对象时,需要使用 new 关键字;Book是我们创建的Book类,center是对象名,创建的每个对象属性值都可能不一样,后面可以给每个对象的属性进行赋值。
(2)引用对象成员
使用"."进行一下操作
①对象名.字段;(引用类的字段)
②对象名.方法名();(引用类的方法)
2.6 方法的参数
- 值参数:按值传递
- 引用参数:向方法传递实参在内 4000 存中的地址,按地址传递
- 输出参数:从方法传递回一个结果,关键字:out
- 数组型参数:参数只允许是一组数组,当方法的参数前带有params关键字时,就是带数组型参数的方法(使用引用传递)
课后练习:定义一个狗狗类,设置属性和方法,实例化狗狗对象,并调用方法
[code]using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp4 { class Program { static void Main(string[] args) { Console.WriteLine("欢迎来到狗狗宠物店!"); Dog a = new Dog();//实例化一个狗狗对象 Console.Write("请输入要领养的狗狗类型:(1、聪明的拉布拉多,2、酷酷的雪纳瑞):"); a.DogType=int.Parse(Console.ReadLine()); Console.Write("请给狗狗起个名字:"); a.DogName = Console.ReadLine(); a.Show(); Console.ReadLine(); } } public class Dog//定义一个狗狗类 { public string DogName; //定义狗狗类属性1:狗狗名字 public int DogType; //定义狗狗类属性2:狗狗类型 public void Show()//定义一个方法,用来进行狗狗的自我介绍 { if (this.DogType == 1) { Console.WriteLine("宠物的自白:我的名字叫" + this.DogName + ",健康值是100,和主人的亲密度是0,我是一只聪明的拉布拉多。" );//this关键字,是对一个对象的默认引用 } else if (this.DogType == 2) { Console.WriteLine("宠物的自白:我的名字叫" + this.DogName + ",健康值是100,和主人的亲密度是0,我是一只酷酷的雪纳瑞。" ); } } } }
结果演示:
升级练习:模拟英雄联盟写一个游戏人物的类
要求:
(1)创建一个 Game_role的类.
(2) 构造方法中给对象封装name,ad(攻击力),hp(血量).三个属性.
(3) 创建一个attack方法,此方法是实例化两个对象,互相攻击的功能:
例: 实例化一个对象 盖伦,ad为10, hp为100
实例化另个一个对象 剑豪 ad为20, hp为80
盖伦通过attack方法攻击剑豪,
此方法要完成 '谁攻击谁,谁掉了多少血, 还剩多少血'的提示功能. '''
=======================这里是结束分割线=============================
- c#语法糖代码——自动属性, 匿名类型,对象与集合初始化器,扩展方法
- C#可扩展编程之MEF(三):导出类的方法和属性
- Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- C#编程基础(中级)(四)——抽象类,密封类和密封方法,派生类的构造方法,访问修饰符,定义和实现接口
- C#基础(类,属性,方法,对象的创建,结构体)
- C# 3.0新特性之Automatic Properties(自动属性)、Object Initializers(对象初始化器)、Collection Initializers(集合初始化器)和Extension Methods(扩展方法)
- Objective-C 基础,类和对象,方法和消息,已声明的属性和存取方法,块对象,协议和范畴类,预定义类型和编码策略
- C#可扩展编程之MEF学习笔记(三):导出类的方法和属性
- 【C#】面向对象基础—属性、方法、结构
- C#编程基础(下)第二课:创建Windows应用程序的方法,窗体的基本属性和方法、基本控件的使用
- Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
- C#语法基础-定义一个矩形对象
- VS 2008 + .NET 3.5 - C# 3.0新特性之Automatic Properties(自动属性)、Object Initializers(对象初始化器)、Collection Initializers(集合初始化器)和Extension Methods(扩展方法)
- 定义一个计算机类:属性:品牌;价格;颜色; 方法:(1)编程的功能 (2)上网的功能 实例化两个对象:“lenovo”;“hasee”
- 3、步步为营VS 2008 + .NET 3.5(3) - C# 3.0新特性之Automatic Properties(自动属性)、Object Initializers(对象初始化器)、Collection Initializers(集合初始化器)和Extension Methods(扩展方法)
- C#编程基础(中级)(五)——列表List的创建和使用,操作列表的属性和方法,泛型类,泛型方法
- C#中的自动属性、隐式类型var、对象初始化器与集合初始化器、扩展方法
- Objective-C 基础,类和对象,方法和消息,已声明的属性和存取方法,块对象,协议和范畴类,预定义类型和编码策略
- 步步为营VS 2008 + .NET 3.5(3) - C# 3.0新特性之Automatic Properties(自动属性)、Object Initializers(对象初始化器)、Collection Initializers(集合初始化器)和Extension Methods(扩展方法)