C#学习笔记-封装
前言
说起来惭愧,学了大半年的C#,其实最开始就接触到了封装的部分,但是一直模模糊糊的弄不清楚,也觉得没什么影响就没怎么在意,现在才开始认真的看这部分内容,看懂了过后好多东西清晰了不少,才发现封装这个基础那么那么重要。
现在反过来一想,封装和类这些其实就是当初最开始学习面向对象编程的时候老师教的定义,最基础的最基础,我居然到现在才弄懂,我也是对不起我以前交的学费啊!(悲痛!)
但是以前学习的时候,老师也是拿着书本,我也是拿着书本,没有练在手上,所以很多东西都太空洞了!还是那句话:“纸上得来终觉浅,绝知此事要躬行”!
定义
封装就是将数据或函数等集合在一个个的单元中。
在我的理解里封装就是“打包”,至于你是打包带走,还是打包扔了,还是打包给谁,都是你的自由。
就像我要去上学,我就要把所有要用的东西全部装到书包里带走到学校一样,我把所有的教科书、练习册、文具盒、笔记本、便利贴等等全部都放在一个包里,我要去上学,我就执行背上书包的动作就好了,因为我的所有的工具都已经“打包”好了,要是让别人帮我把书包带到学校去也是一样的道理,他们并不需要知道我书包里装了什么,他们只要执行帮我带书包这个动作就好了。我的书包里面的东西他们可以用久了废了然后扔了,也可以一直都在,还可以装入新的东西。当然这些操作是我书包里面的内部操作,这个只需要我知道就好了,外面的人他们并不关心里面到底发生了什么。
这就是封装的作用:保护数据不被外来因素无意间破坏,同时却也方便外面的操作直接调用。
使用
实际代码操作:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Buy a new car.................");
Car car = new Car();
Console.WriteLine("Here is the information of new car:");
Console.WriteLine("car's color is:{0}", car.Color);
Console.WriteLine("car has {0} types", car.TypeNum);
Console.WriteLine("car's oil is:{0}\t\n", car.Oil);
car.run();
Console.WriteLine("I wanna change the color of car");
car.changeColor(car.Color);
car.fillOil(car.Oil);
Console.Read();
}
} /// <summary>
/// package
/// all things about car can be packaged in the one class
/// </summary>
public class Car
{
int typeNum = ;
string color = "red";
int oil = ; /// <summary>
/// the number of type
/// not allowed to modify,onlyread
/// </summary>
public int TypeNum
{
get
{
return typeNum;
}
} /// <summary>
/// the color of car
/// but we can change the color
/// </summary>
public string Color
{
get
{
return color;
} set
{
color = value;
}
} /// <summary>
/// the oil
/// it always change
/// </summary>
public int Oil
{
get
{
return oil;
} set
{
oil = value;
}
} public void run()
{
Console.WriteLine("Running for a while................\t\n");
} public void changeColor(string oldColor)
{
string newColor = "";
string yORn = "";
Console.WriteLine("Are you sure change the color of your car?Y/N");
yORn = Console.ReadLine(); if (yORn == "y" || yORn == "Y")
{
Console.WriteLine("Please input which color you wanna");
newColor = Console.ReadLine(); if (newColor != oldColor)
{
Console.WriteLine("Your car's new color is {0}", newColor);
}
else
{
Console.WriteLine("Your new color is as same as the old one,so you don't need to change!");
}
Console.Read();
}
else
{
Console.WriteLine("Fine! Your car's color still is{0}", oldColor);
Console.Read();
}
} public void fillOil(int previousOil)
{
int presentOil = ;
Console.WriteLine("Your car's oil is{0}%", previousOil);
Console.WriteLine("Filling the oil.................");
Console.WriteLine("Now,yourcar's oil is{0}%\t\n", presentOil);
Console.WriteLine("Fine!Have a nice day");
Console.Read(); }
}
效果预览:
C#学习笔记-封装的更多相关文章
- C++学习笔记 封装 继承 多态 重写 重载 重定义
C++ 三大特性 封装,继承,多态 封装 定义:封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类,其中数据和函数都是类的成员,目的在于将对 ...
- Java学习笔记——封装、继承和多态
先说说封装: 用new 一条狗来举个例子: public class Dog { //私有化字段 private String name; private int age; //无参构造 Dog(){ ...
- JS学习笔记 - 封装getPosition函数、一串跟着鼠标的div
function getPosition(ev) { var scrollTop = document.documentElement.scrollTop || document.body.scrol ...
- MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- [Firefly引擎][学习笔记三][已完结]所需模块封装
原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读: 笔记三主要就是各个模块的封装了,这里贴 ...
- Directx11学习笔记【二】 将HelloWin封装成类
我们把上一个教程的代码封装到一个类中来方便以后的使用. 首先新建一个空工程叫做MyHelloWin,添加一个main.cpp文件,然后新建一个类叫做MyWindow,将于窗体有关的操作封装到里面 My ...
- c++学习笔记之封装篇(上)
title: c++学习笔记之封装篇(上) date: 2017-03-12 18:59:01 tags: [c++,c,封装,类] categories: [学习,程序员,c/c++] --- 一. ...
- 第2课第2节_Java面向对象编程_封装性_P【学习笔记】
摘要:韦东山android视频学习笔记 面向对象程序的三大特性之封装性:把属性和方法封装在一个整体,同时添加权限访问. 1.封装性的简单程序如下,看一下第19行,如果我们不对age变量进行权限的管控 ...
- python学习笔记:安装boost python库以及使用boost.python库封装
学习是一个累积的过程.在这个过程中,我们不仅要学习新的知识,还需要将以前学到的知识进行回顾总结. 前面讲述了Python使用ctypes直接调用动态库和使用Python的C语言API封装C函数, C+ ...
随机推荐
- Windows建立Cucumber和Ruby测试环境
1. 下载安装Ruby1.9.3, 不要用RubyInstall 一键安装,下载zip然后解压到c:\Ruby193 (不要用2.0,用2.0安装不成功,不要怪我) 2. 环境变量配置RUBY_HOM ...
- 常用网络工具 ipconfig arp traceroute
如今的计算机是离不开网络的计算机了,因而我们对网络要有一基础的认识.连不上网,程序运行不正常之类的,多少都与网络有关.本文将介绍常用的工具. 网络出问题 ipconfig ping 网络连不上,首先要 ...
- MySQL5.7 新增配置
1.log_timestamps 在5.7.2以后的版本中增加一个单独控制error log , general log,slow log的记录的时间,默认是UTC,需要配置成SYSTEM(本地时间) ...
- percona5.7 源码安装
200 ? "200px" : this.width)!important;} --> 介绍 主要为了测试percona的线程池的性能,这里就简单介绍一下percona5.7 ...
- xamarin uwp数字证书公钥私钥
对于数字证书存储导入到电脑中,采用如下方式: /// <summary> /// 导入证书 /// </summary> /// <param name="ra ...
- Android开发学习之路-Volley源码解析
从简单的StringRequest入手看看Volley的工作机制. 先简单说下Volley的用法: ① 获取一个RequestQueue mRequestQueue = Volley.newReque ...
- 如何用注解简化SSH框架
一.简化代码第一步,删除映射文件,给实体类加上注解 @Entity //声明当前类为hibernate映射到数据库中的实体类 @Table(name="news") //声明tab ...
- 构建hibernate
package hanqi.dao; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hib ...
- Trace2:创建SQL Trace
Trace是轻量级的追踪工具,几乎对系统没有任何副作用,开启Trace,经常能够帮助DBA追踪到一些非常有用的信息.Trace出现的比较早,MS推出更强大的Extended Events来取代Trac ...
- SQL Server 更改跟踪(Chang Tracking)监控表数据
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 主要区别与对比(Compare) 实现监控表数据步骤(Process) 参考文献(Refere ...