【卷土重来之C#学习笔记】(三) 类的基本概念
1.类的概述
程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合,并被称为类。
类是一个能存储数据并执行代码的数据结构。
它包含数据成员和函数成员;
数据成员:存储与类或类的实例相关数据 (字段、常量)
函数成员:执行代码(方法、属性、构造函数、析构函数、预算符、索引器、事件)
2.声明类
[修饰符] class 类名
{
类成员
}
类成员可以在类主体内部以任何顺序声明。
3.类成员
字段和方法是最重要的类成员类型。字段是数据成员,方法是函数成员。
※字段:隶属于类的变量,用来保存数据 ,可以读取和写入。
※字段字段初始化是声明的一部分,由一个等号后面跟着一个求值的表达式组成。
※没有被初始化语句,字段的值会被编译器设为默认。比如值类型默认为0 bool类型默认为false 引用类型默认为null
※方法:具有名称的可执行代码块(没有名称的叫匿名方法,后面介绍)
※方法的声明:
void PrintNums() //void:是返回类型 不返回值则指定为void
// PrintNums:是方法名称
//():是参数列表
{ //大括号内的为方法体,里面为执行代码
Console.WriteLine("");
Console.WriteLine("");
}
4.创建变量和类的实例
类的声明只是用于创建类的实例的蓝图,一旦被声明,就可以创建类的实例。
※类是引用类型他们要为数据引用和实际数据都申请内存
※数据的引用保存在一个类型的变量中,所以要创建类的实例,需要从声明一个类类型开始。如果变量没有被初始化,他的值是未定义的
5.为数据分配内存
声明类类型的变量所分配的内存是用来保存引用的,而不是用来保存类对象实际数据的。要为实际数据分配内存,需要用new运算符
※new 运算符为任意指定类型的实例分配并初始化内存。依据类型的不同从栈和堆里分配
下面是new运算符创建表达式,并把它的返回值赋给类变量的例子:
Dealer theDealer //声明变量
theDealer =new Dealer(); //为类对象分配内存并赋值给变量
合并这两个步骤:
Dealer theDealer = new Dealer() //声明并初始化
//Dealer theDealer :声明对象
//new Dealer() :使用对象创建表达式初始化变量
6.实例成员
类声明相当与蓝图,通过这个蓝图想创建多少个类的实例都可以。
※ 实例成员:类的每个实例都是不同的实体,他们都有自己的一组数据成员,不同于同一类的其他实例
※静态成员: 实例成员都是默认类型,单页可以声明与类而不是实例相关的成员,称为静态成员。
7.访问修饰符
访问修饰符是成员的可选部分,指明程序的其他部分如何访问成员
字段的格式:
访问修饰符 类型 标识符
方法的格式:
访问修饰符 返回类型 方法名()
{
}
五种成员访问修饰符: 私有的 (Private)、公有的(public)、受保护的(protected)、内部的(internal)、受保护内部的(protected internal)
※私有访问是默认的访问级别(不带访问修饰符都是私有的)
※私有成员只能从声明他的类的内部访问
※显式声明和隐式声明 两者等价
显式声明 : private int myint
隐式声明 : int myint
※ 公有成员:可以被程序中的其他对象访问 必须使用public访问修饰符指定公有访问
8.从类的内部访问成员
下面的类声明展示了类的方法对其字段和其他方法的访问
两个私有字段和私有方法,类的所有成员都可以被类的人和方法(或者函数成员)访问
class DaysTemp
{
//两个私有字段
private int High = ;
private int Low = ;
private int GetHight()
{
return High; //访问私有字段
}
private int GetLow()
{
return Low; //访问私有字段
}
public float Average()
{
return (GetHight()+GetLow())/; //访问私有方法
} }
9.从类的外部访问成员
要从类的外部访问实例成员,必须包括变量名称和成员名称,中间用.分割。
namespace Simple
{
class DaysTemp
{
//两个公有字段 可以从外部访问他们
public int High = ;
public int Low = ;
}
class Program
{
static void Main()
{
DaysTemp temp = new DaysTemp(); //实例化DaysTemp类
temp.High = ; //重新赋值High 用.来获取High
temp.Low = ; //重新赋值Low
Console.WriteLine("High : {0}" ,temp.High); //输出公有字段High的值
Console.WriteLine("Low : {0}", temp.Low); //输出公有字段Low的值
Console.ReadLine();
}
}
}
【卷土重来之C#学习笔记】(三) 类的基本概念的更多相关文章
- 【卷土重来之C#学习笔记】(一)c#文章导航目录
[卷土重来之C#学习笔记](一)c#文章导航目录 [卷土重来之C#学习笔记](二)c#编程概述 [卷土重来之C#学习笔记](三)类型.存储.对象 [卷土重来之C#学习笔记](四)类的基本概念 [卷土重 ...
- [Firefly引擎][学习笔记三][已完结]所需模块封装
原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读: 笔记三主要就是各个模块的封装了,这里贴 ...
- java之jvm学习笔记三(Class文件检验器)
java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...
- VSTO学习笔记(三) 开发Office 2010 64位COM加载项
原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...
- Java IO学习笔记三
Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...
- python学习笔记4_类和更抽象
python学习笔记4_类和更抽象 一.对象 class 对象主要有三个特性,继承.封装.多态.python的核心. 1.多态.封装.继承 多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型 ...
- Typescript 学习笔记三:函数
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记
回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...
- muduo网络库学习笔记(三)TimerQueue定时器队列
目录 muduo网络库学习笔记(三)TimerQueue定时器队列 Linux中的时间函数 timerfd简单使用介绍 timerfd示例 muduo中对timerfd的封装 TimerQueue的结 ...
- angular学习笔记(三十)-指令(10)-require和controller
本篇介绍指令的最后两个属性,require和controller 当一个指令需要和父元素指令进行通信的时候,它们就会用到这两个属性,什么意思还是要看栗子: html: <outer‐direct ...
随机推荐
- 删除当前文件夹的bat工具
@echo off:11set /p path=Please enter delete filepath:del /f /s /q %path%rd /q /s %path%goto 11pause
- Setting property 'source' to 'org.eclipse.jst.jee.server:web' did not find a matching property原因
这个问题困扰了好久,虽然只是tomcat的一个警告,但强迫症让我总觉得不舒服,搜索了好多文章才找到知乎上一篇处理的最好的.另外:能找谷哥,尽量不要度娘,太浪费时间. 具体操作如下: 默认情况下,ser ...
- 为什么要使用MQ消息中间件?
在面试大型互联网公司的时候,很可能会被问到消息队列的问题: 1.在何种场景下使用了消息中间件? 2.为什么要在系统里引入消息中间件? 3.如何实现幂等? 链式调用是我们在写程序时候的一般流程,为了完成 ...
- kali linux之netcat
网络工具中的瑞士军刀----体积小,功能强大 侦听模式/传输模式 telnet/获取banner信息 传输文本信息,文件,目录 加密传输文件,远程控制/木马,加密所有流量(来做远程控制是非常理想的选择 ...
- Jmeter_Beanshell_使用Java处理JSON块
版权声明:本文为博主原创文章,转载请注明出处. [环境] ①Jmeter版本:3.2,JDK:1.8 ②前置条件:将json.jar包置于..\apache-jmeter-3.2\lib\下,并将该j ...
- 【转】在Win10家庭版中启用组策略
源地址:https://www.baidu.com/link?url=tZrD7LVxQEKQUTWUum86LoxyaxWNLs5BeBE2K36TliRi8sjGraKc-iP3TEm6sc_KX ...
- 【java】AtomicReference介绍
本文转载自:http://www.cnblogs.com/skywang12345/p/3514623.html 概要 本章对AtomicReference引用类型的原子类进行介绍.内容包括: Ato ...
- 第9项:尽量使用try-with-resources而不是try-finally(Prefer try-with-resources to try-finally)
Java库包含许多必须通过调用close方法手动关闭的资源. 示例包括InputStream,OutputStream和java.sql.Connection. 关闭资源经常被客户忽视,可预见的可 ...
- java 实现在线阅读 .pdf
1.资源的本地地址 2.设置响应头 3.代码实现 @ResponseBody @RequestMapping(value = "/read") @ApiOperation(valu ...
- Android File文件存储功能
1.介绍 2.使用方法 3.文件存储位置 4.java后台代码 package com.lucky.test47file; import android.support.v7.app.AppCompa ...