第三章 使用属性升级MyBank

1、C#中的访问修饰符:

a) public 【公共的】访问不受到任何限制,级别最高。一般用于修饰方法,提供给其他类调用。

b) private 【私有的】只有类的内部可以使用,一般用于修饰字段,保证数据的安全性。

注:如果在成员定义之前没有指定访问修饰符,默认为internal,可理解为只能在本项目中访问。

2、C#中的this关键字:

可以看做是当前类的实例(对象),可以调用当前类的所有成员变量(字段)和方法。

This——this调用的是成员变量。当名字相同时,使用this可以获得当前对象(成员变量)。

3、属性

a) C#中使用属性对字段进行封装:使用get和set访问器。

相当于使用get\set方法:

private string name;

public string GetName(){

    return name;

}

public void SetName(string name){

     this.name = name; }

注:(1)Get方法有返回值类型没有参数;(2)Set方法没有返回值有参数;(3)this表示当前类的对象。

b) 对字段的使用:

1、创建对象

如:Student stu=new Student();

2、使用Set方法设置字段值

stu.SetName("张三");

3、使用变量接收调用get方法得到的值

string name=stu.GetName();

4、使用

Console.WriteLine(name);

5、停留

Console.ReadLine();

c) C#中的属性:在C#中私有字段通过get|set访问器进行访问实现,这种结合了字段和方法的实现方式叫做属性。

  • 属性的语法:

private string _name;

public string Name

{

get{ return _name; }

set{ _name=value; }

}

注:自己的私有字段不给别人用,但是提供了可以让别人访问的公开方法,自己的方法可以调用自己的字段。定义类中的一个属性时,属性的数据类型必须和它所访问的字段类型一致。

  • 对字段的使用:

1、创建对象:

如:Student stu=new Student();

2、给属性赋值

stu.Name="zhangsan";

3、用变量接收得到的属性值

string name=stu.Name;

4、使用

Console.WriteLine("name="+name);

5、停留

Console.ReadLine();

  • 属性的作用:

控制私有字段的可访问性,保护内部数据的安全

  1. 属性的3种访问类型
    1. 只读属性——只包含get访问器
    2. 只写属性——只包含set访问器
    3. 读写属性——只包含get和set访问器

d) 封装字段:在C#中将类中的字段、属性绑到一起,使用属性对字段进行封装。

  1. 封装——封装是面向对象的三大特性之一。
  2. 好处——避免非法数据的访问,保证数据完整性。

*****************************************************************

类的成员——字段:数据|属性:读写状态|方法:操作行为

*****************************************************************

4、C#中的引用传递和值传递

a) 值传递

  1. 方法的定义:

访问修饰符   返回值类型  方法名(数据类型 值1,数据类型 值2.。。。)

{

//方法体

}

  1. 值传递参数的调用:对象名.方法名(值1,值2.。。。);

注:值传递只在方法中改变,却不返回改变,参数仍然是原来的值。

b) 引用传递

  1. 方法的定义:

访问修饰符   返回值类型  方法名(ref 数据类型 1,ref 数据类型 2.。。。)

{

//方法体

}

  1. 引用传递参数的调用:

对象名.方法名(ref 1,ref 2.。。。);

  1. 调用的注意事项:
    1. 定义和调用之前都需要加上ref
    2. 作为参数的变量必须声明和赋值
    3. 希望保留参数更改的时候使用

c) 比较值传递和引用传递——3.4.4

  • 值传递——不能对原始数据进行修改

因:值传递是将变量的值复制一份给方法,使得方法的形参和实参的值相同,在调用的方法中修改形参也只是对实参复制品的数据做更新,并没有真正改变实参的值。

  • 引用传递——对原始数据进行修改并保留

因:直接将数据引用,使得调用方法直接对引用对象进行更改,会影响实参原来的值。

转载于:https://www.cnblogs.com/suola/p/11344126.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java面试题27 java中下面哪些是Object类的方法()

java面试题27 java中下面哪些是Object类的方法() A notify() B notifyAll() C sleep() D wait() 蒙蔽树上蒙蔽果,蒙蔽树下你和我。遇到这种题,我默默的打开了编译工具 Object类中方法: protected Object clone()…

HK-2000 数采仪系统说明之 7.HK7710 DTU 简单配置说明

DTU配置列表: 1 移动服务中心设置(MSC) 2 终端单元设置 3 网络通道设置 4 用户串口设置 移动服务中心设置(MSC) 一般默认,当需要连接的网络是APN网络是需要配置,该项下的APN接入点信息 MSC设置列表: 1 服务代码 2 P…

shiro学习(1):shiro简介

Apache Shiro是Java的一个安全框架。对比另一个安全框架Spring Sercurity,它更简单和灵活。 Shiro可以帮助我们完成:认证、授权、加密、会话管理、Web集成、缓存等。 Apache Shiro特性 Authentication:身份认证/登录,验证用户是…

是要我向垃圾学习吗

之前把程序给改了,造成程序不能通过编译,然后 领导让我不要乱改,程序那么写肯定是有原因的,照着以前的弄。 我心里那叫一个羊驼,我改的是我自己写的那部分结构,我在编写新功能的逻辑的时候,发现…

微软启动了自爆程序,让我们一起帮它倒计时

……“公元2008年10月20日,注定成为人类信息技术史上不平凡的一天,因为在这一天,曾经创造了无数辉煌的计算机软件帝国微软公司,启动了自爆程序,剩下的,就是倒计时了……” ——《地球人类信息技术编年史》 …

python字典遍历的几种方法(转)

源地址:https://www.cnblogs.com/stuqx/p/7291948.html(1)遍历key值>>> a {a: 1, b: 2, c: 3} >>> for key in a:print(key:a[key])a:1 b:2 c:3 >>> for key in a.keys():print(key:a[key])a:1 b:2 c:3在使用上&a…

shiro学习(2):第一个shiro程序

工具idea 首先创建maven项目 配置文件 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http…

解决水晶报表部署时出错的问题

我在使用VS2008自带的水晶报表开发一个项目时&#xff0c;遇上这么一个问题&#xff0c;就是在开发环境下运行没有问题&#xff0c;而且在开发的机器上部署发布的项目时也没有问题&#xff0c;但是在服务器上部署发布的项目就出现web.config配置文件出错。 错误报的是&#xff…

用树莓派(等)为 USB Midi 键盘增添连接方式

我在去年买了一个 M-Audio 的 Midi 键盘&#xff0c;用来连接电脑或者 iPad 弹琴。但是由于琴摆放的位置没有办法拉充电线&#xff0c;所以我能弹琴多久很大程度上取决于设备还有多少电。前一阵子从朋友手里白嫖了个橘子派&#xff0c;我就考虑用这个板子给我的 Midi 键盘做个无…

python ftp 上传文档出现 553 Could not create file

报错内容&#xff1a; *cmd* TYPE I*put* TYPE I\r\n*get* 200 Switching to Binary mode.\r\n*resp* 200 Switching to Binary mode.*cmd* PASV*put* PASV\r\n*get* 227 Entering Passive Mode (10,65,252,38,254,125).\r\n*resp* 227 Entering Passive Mode (10,65,252,38,25…

shiro学习(3):用户权限

工具idea 首先创建maven项目 配置文件 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http…

WPF学习笔记(三)

1.1 事件概括 第一节中我们给窗体添加了一个按钮&#xff0c;不过好像Button点个几下也只有些发光样式的变化&#xff0c;什么你还把系统皮肤去掉了&#xff1f;算了承认下确实够寒碜&#xff0c;那让我们再动动手。 1.1.1 路由事件简述 public HelloWorld() { Button button …

结构体的赋值和初始化与取出结构体变量中的成员

1 /*结构体的赋值和初始化*/2 3 # include <stdio.h>4 5 struct Student 6 {7 int age;8 float score;9 char sex;10 };11 12 int main(void)13 {14 struct Student st { 80, 66.6, F};//定义同时就赋值15 struct Student st2;//下一行不能写一句类似于…

shiro学习(4):shiro认证流程

Shiro登录校验流程实现与分析 什么是Shiro Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。 三个核心组件 Subject, Se…

python之Map函数

转载 https://www.cnblogs.com/gongxr/p/7247855.html# map()函数使用举例 # 功能&#xff1a;map()接受一个函数f和一个或多个list&#xff0c;将f依次作用在list的每个元素&#xff0c;得到一个新的列表 # 语法&#xff1a;map(方法名&#xff0c;列表&#xff0c;[列表2]) #…

Windows Mobile开发应该选择哪种开发语言?

Windows Mobile开发应该选择哪种开发语言&#xff1f;这个问题曾经被问了很多很多次&#xff0c;特别是打算开始学习Windows Mobile开发的朋友。Native Code or Managed Code? C/C or C#/VB.NET? 简单的说&#xff0c;Native Code的代码执行效率高&#xff0c;开发效率低&…

在ASP.NET MVC中实现Select多选

我们知道&#xff0c;在ASP.NET MVC中实现多选Select的话&#xff0c;使用Html.ListBoxFor或Html.ListBox方法就可以。在实际应用中&#xff0c;到底该如何设计View Model&#xff0c; 控制器如何接收多选Select的选中项呢&#xff1f; 实现效果如下&#xff1a; 初始状态某些选…

shiro学习(5):ini文件和自定义realm

工具idea 首先创建maven项目 配置文件 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http…

关于python中带下划线的变量和函数 的意义

转载:https://www.cnblogs.com/wangshuyi/p/6096362.html总结:变量:1. 前带_的变量: 标明是一个私有变量, 只用于标明, 外部类还是可以访问到这个变量2. 前带两个_ ,后带两个_ 的变量: 标明是内置变量,3. 大写加下划线的变量: 标明是 不会发生改变的全局变量函数:1. 前带…

几个简单的正则小例子

1 ^[\w][\w\.-]*[\w][\w-]*(?<val>\.\w){0,2}$ 电子邮件2 ^http://([\w-]*\.)([\w-]*)(/\w)*([\w-\.?%&]*)$ URL3 ^1[3,5]{1}\d{9}$ 手机号码4 ^(0\d{2,3})[-]?\d{7,8}(-\d{4})*$|\(0\d{2,3}\)[-]?\d{7,8}(-\d{4})*$ 电话号码5 Js替换字符串两边非空字符6 String…