C#基础-面向对象-封装
封装
命名空间
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApp6
{
class BankCount
{
public string cardid;
public double dMoney;
public string name;
//两个构造函数,一个有参,一个无参
public BankCount()
{
}
public BankCount(string _cardid,double _dMoney,string _name)
{
this.cardid = _cardid;
this.dMoney = _dMoney;
this.name = _name;
}
}
}
using System;
namespace ConsoleApp6
{
class Program
{
static void Main(string[] args)
{
BankCount bcount = new BankCount("10086", 100, "Chale");
Console.WriteLine("存款金额:{0}", bcount.dMoney);
Console.WriteLine("取款金额:");
double d = Convert.ToDouble(Console.ReadLine());
bcount.dMoney = bcount.dMoney - d;
Console.WriteLine("剩余金额:"+bcount.dMoney);
}
}
}
上面的程序需要修改,为了保证数据的安全性,不让外面程序对文件直接修改。对字段进行封装,封装就是不让字段直接暴露在外直接访问或设置
为了保证数据的安全性,对字段进行封装,封装就是不让字段直接暴露在外直接访问或设置
提供一种机制在字段赋值的时候进行检查,属性。通过属性对这个字段进行访问或设置
// 修改为私有字段,所以不能在外部对这个字段进行访问
private string cardid;
private double dMoney;
private string name;
下面讲一下属性应用
一般我们在外部可以直接对属性进行操作,所以它的访问权限是public
下面代码就是表示访问cardid和设置cardid
public string Cardid
{
get // 表示在访问属性时,所对应的字段
{
return cardid;
}
set // 隐式参数value,表示赋值的数据
{
cardid = value;
}
}
对属性可以进行基本判断,程序如下:
public double DMoney{
get{
return dMoney;
}
set{
if (value < 0){
dMoney = 0;
}else{
dMoney = value;
}
}
}
修改后代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApp6
{
class BankCount
{
// 为了保证数据的安全性,对字段进行封装,封装就是不让字段直接暴露在外直接访问或设置
// 提供一种机制在字段赋值的时候进行检查,属性。通过属性对这个字段进行访问或设置
// 修改为私有字段,所以不能在外部对这个类的字段进行访问
private string cardid;
private double dMoney;
private string name;
// 一般我们在外部可以直接对属性进行操作,所以它的访问权限是public
public string Cardid
{
get // 表示在访问属性时,所对应的字段
{
return cardid;
}
// 账号初始化后就不能修改,所以这边把设置删去,防止账号被修改
//set // 隐式参数value,表示赋值的数据
//{
// cardid = value;
//}
}
public double DMoney
{
get
{
return dMoney;
}
set
{
if (value < 0)
{
dMoney = 0;
}
else
{
dMoney = value;
}
}
}
public string Name
{
get
{
return Name;
}
set
{
name = value;
}
}
//两个构造函数,一个有参,一个无参
public BankCount()
{
}
public BankCount(string _cardid,double _dMoney,string _name)
{
this.cardid = _cardid;
this.dMoney = _dMoney;
this.name = _name;
}
}
}
using System;
namespace ConsoleApp6
{
class Program
{
static void Main(string[] args)
{
BankCount bcount = new BankCount("10086", 100, "Chale");
Console.WriteLine("存款金额:{0}", bcount.DMoney);
Console.WriteLine("取款金额:");
double d = Convert.ToDouble(Console.ReadLine());
bcount.DMoney = bcount.DMoney - d;
Console.WriteLine("剩余金额:"+bcount.DMoney);
// bcount.Cardid = "10089"; //账号不能修改,需要修改代码,可以去掉属性的set就能防止修改
}
}
}
C#基础-面向对象-封装的更多相关文章
- 九、Java基础---------面向对象封装、继承、多态
封装 1.1 基本概念 封装(encapsulation)是面向对象三大特征之一,它是指将对象的状态信心隐藏在对象的内部,不允许外部直接进行访问,而是通过该类提供的方法来实现对内部信息的操作和访问. ...
- Java基础——面向对象(封装——继承——多态 )
对象 对象: 是类的实例(实现世界中 真 实存在的一切事物 可以称为对象) 类: 类是对象的抽象描述 步骤: 1.定义一个类 (用于 描述人:) ( * 人:有特征和行为) 2.根据类 创建对象 -- ...
- Java第三次作业——面向对象基础(封装)
Java第三次作业--面向对象基础(封装) (一)学习总结 1.什么是面向对象的封装性,Java中是如何实现封装性的?试举例说明. 封装性 封装性是面向对象的方法所应遵循的一个重要原则,它有两个含义: ...
- Java基础-面向对象第一特性之封装(Encapsulation)
Java基础-面向对象第一特性之封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.理解什么是面向过程和面向对象 面向过程与面向对象都是我们编程中 ...
- java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final
一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...
- C#基础-----面向对象
C#基础-----面向对象(一) 分类: C#基础2015-06-08 14:10 2人阅读 评论(0) 收藏 举报 1,面向对象 什么是面向对象?一个分析问题的方式(增强了程序的可扩展性) 几个名词 ...
- java基础面向对象之类与对象
java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...
- python基础——面向对象进阶下
python基础--面向对象进阶下 1 __setitem__,__getitem,__delitem__ 把对象操作属性模拟成字典的格式 想对比__getattr__(), __setattr__( ...
- 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点
前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...
随机推荐
- 搭建MHA
安装MySQL 5.7 yum源的配置文件如下 [mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysq ...
- [转]一次使用Eclipse Memory Analyzer分析Tomcat内存溢出
一次使用Eclipse Memory Analyzer分析Tomcat内存溢出 前言 在平时开发.测试过程中.甚至是生产环境中,有时会遇到OutOfMemoryError,Java堆溢出了,这表明程序 ...
- FastDFS 基础知识
FastDFS是一个开源的轻量级分布式文件系统,它用纯C语言实现,支持Linux.FreeBSD.AIX等UNIX系统.它只能通过专有API对文件进行存取访问,不支持POSIX接口方式,不能mount ...
- Python列表类型及常用操作
Python列表类型 1.用途: 存放多个值,可以根据索引存取值 2.定义方式: 在[ ]内用逗号分割开多个任意类型的值 l=['yven','law','lyf'] #l=list(['yven', ...
- chrom锚点不能跳转的问题
最近做一调查页,对没有选择的问题做定位和提示,谷歌下定位不能跳转,解决方法: window.location.hash = 锚点: window.location = window.location;
- struts 上传文件 Dynavalidatorform 实例
一.相关jar包 一个空struts工程的jar包: 另上传文件的两个jar包: 二.页面 1.上传页面upload.jsp <%@ page language="jav ...
- Sundy_Android开发深入浅出和高级开发视频教程
Sundy_Android开发深入浅出和高级开发视频教程 放于播音员的网盘中又名:android零基础到高级软件开发工程师培训课程全集(400多讲) 1.课程介绍 2.java重点难点 3.版本控制- ...
- VM(xp系统下用虚拟机安装win8 提示 :units specified don't exist, SHSUCDX can't install)解决方法
改成IDE的模式
- ubuntu 安装 deb 软件包
参考链接地址 blog.csdn.net/kevinhg/article/details/5934462 sudo dpkg -i xxxx.deb 安装一个 Debian 软件包,如你手动下载的文件
- Xapian简明教程(未完成)
第一章 简介 1.1 简介 Xapian是一个开源的搜索引擎库,它可以让开发者自定义的开发一些高级的的索引和查找因素应用在他们的应用中. 通过阅读这篇文档,希望可以帮助你创建第一个你的索引数据库和了解 ...