C#类、对象、方法和属性详解
C#类、对象、方法和属性详解
一、相关概念:
1、对象:现实世界中的实体(世间万物皆对象)
2、类:具有相似属性和方法的对象的集合
3、面向对象程序设计的特点:封装 继承 多态
4、对象的三要素:属性(对象是什么)、方法(对象能做什么)、事件(对象如何响应)
☆相互关系:类是对象的抽象,对象是类的实例,类是一种抽象的分类,对象则是具体事物。
比如如果车是一个类,某个人的一辆奔驰车就是一个对象,车的颜色质量就是它的属性,启动、停止这些动作则可以定义为车的方法。
二、类的定义与语法
1、定义类:
[修饰符] class 类名
{
类成员
}
2、类的访问修饰符:public internal
a) public:可访问域是所在的程序和任何引用的程序 访问不受限制
语法:
public class 类名
{
类成员
}
b) internal:可访问域定义范围内 (默认访问修饰符)
语法:
(internal) class 类名
{
类成员
}
3、类成员:数据成员和字段
a) 数据成员:字段和常量
字段:变量
声明:类型 字段名
例:
public class Persion
{
public string name;
}
b) 方法成员 (方法是类的行为,告诉我们类能够做什么,)
实例方法:
修饰符 返回值类型 方法名(参数列表)
{
方法体
}
修饰符:如:public、private、protected、internal
返回值类型:若方法无返回值,则使用 void
例:
public class Example01 //实例方法
{
public void SayHello() //定义一个无参无返回的方法
{
Console.WriteLine("Hello There")
}
static void Main()
{
Example01 objA=new Example01()
objA.SayHello() //创建对象并调用方法
}
}
静态方法:
修饰符 static返回值类型 方法名(参数列表) //增加了static关键字
{
方法体
}
例:
public class Example01 //实例方法
{
public static void SayHello() //定义一个静态方法
{
Console.WriteLine("Hello There")
}
static void Main()
{
Example01.SayHello() //不需要创建对象
}
}
☆静态方法与实例方法的区别:静态方法只与类有关,它不依赖于对象的存在而存在;实例方法则在对象存在后才能使用。
4、成员的访问修饰符:public、private、protected、internal
a) public:公有成员
b) private:私有成员
c) protected:保护成员
d) internal:内部成员
|
例: |
|
|
代码如下 |
复制代码 |
|
using System; namespace ConsoleApplication2 |
|
三、实例化对象:关键字:new
语法:
类 对象名称=new 类();
|
例: |
|
|
代码如下 |
复制代码 |
|
using System; |
|
四、属性
1、
a) 概念:用于访问类的字段的成员
b) 属性用途:保证数据安全,作数据的验证
2、声明:
访问修饰符 数据类型 属性名
{
get{return 字段;} //读访问器,通过它外部用户可以读取属性的值
set{字段=value;} //写访问器,通过它外部用户可以为属性赋值,用户输入的值就存放在value关键字中,并可以进行输入值验证
}
例:
public class Student
{
private int age; //私有字段,防止用户直接访问
public int Age
{
get{return age;} //用于读取age的值
set
{
if((value>=18)&&(value<=45))
age=value; //为age赋值并验证
else
age=18;
}
}
}
3、特殊属性:
a) 只读属性:
public 数据类型 属性名称
{
get{return 字段;}
}
b) 自动属性:
public 数据类型 属性名称{get;set;}
五、方法的参数
1、值参数:按值传递
2、引用参数:向方法传递实参在内存中的地址,按地址传递
3、输出参数:从方法传递回一个结果
关键字:out
4、数组型参数:参数只允许是一组数组,当方法的参数前带有params关键字时,就是带数组型参数的方法(使用引用传递)
C#类、对象、方法和属性详解的更多相关文章
- JavaScript对象的property属性详解
JavaScript对象的property属性详解:https://www.jb51.net/article/48594.htm JS原型与原型链终极详解_proto_.prototype及const ...
- 第15.10节 PyQt(Python+Qt)入门学习:Qt Designer可视化设计界面组件与QWidget类相关的组件属性详解
PyQt学习有阵子了,对章节的骨架基本考虑好了,准备本节就写组件的属性的,结果一是日常工作繁忙,经常晚上还要加班,二是Qt的组件属性很多,只能逐一学习.研究和整理,花的时间有点长,不过终于将可视化设计 ...
- 【转】HTML embed标签使用方法和属性详解
一.基本语法 代码如下: embed src=url 说明:embed可以用来插入各种多媒体,格式可以是 Midi.Wav.AIFF.AU.MP3等等,Netscape及新版的IE 都支持.url为音 ...
- Vue.js 源码分析(五) 基础篇 方法 methods属性详解
methods中定义了Vue实例的方法,官网是这样介绍的: 例如:: <!DOCTYPE html> <html lang="en"> <head&g ...
- HTML embed标签使用方法和属性详解
一.基本语法 代码如下: embed src=url 说明:embed可以用来插入各种多媒体,格式可以是 Midi.Wav.AIFF.AU.MP3等等,Netscape及新版的IE 都支持 ...
- arguments对象的callee属性详解
在函数内部,有两个特殊的对象:arguments和this. argument对象有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数.请看下面这个非常经典的阶乘函 ...
- 007-Scala类的属性和对象私有字段实战详解
007-Scala类的属性和对象私有字段实战详解 Scala类的使用实战 变量里的类必须赋初值 def函数时如果没参数可不带括号 2.不需要加Public声明 getter与setter实战 gett ...
- Dream------scala--类的属性和对象私有字段实战详解
Scala类的属性和对象私有字段实战详解 一.类的属性 scala类的属性跟java有比较大的不同,需要注意的是对象的私有(private)字段 1.私有字段:字段必须初始化(当然即使不是私有字段也要 ...
- Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量
Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量 一丶线程的理论知识 什么是线程: 1.线程是一堆指令,是操作系统调度 ...
随机推荐
- CodeForces - 869C The Intriguing Obsession(组合数)
题意:有三个集合,分别含有a.b.c个点,要求给这些点连线,也可以全都不连,每两点距离为1,在同一集合的两点最短距离至少为3的条件下,问有多少种连接方案. 分析: 1.先研究两个集合,若每两个集合都保 ...
- 微信小程序自定义组件-下拉框
这个是网址https://www.cnblogs.com/zjjDaily/p/9548433.html 微信小程序之自定义select下拉选项框组件 知识点:组件,animation,获取当前点击元 ...
- 0101-ioc
背景 ioc是spring的基础,即控制反转.springboot基于注解使用ioc. ioc spring称所有被管理的对象为bean, spring ioc主要通过描述的方式完成3类bean的管理 ...
- 自定义对象使用 ArrayList 进行增删改查(dos程序)
马上要进行java基础考试了,闲着写一次博客,把这10周学的东西过一遍,可能没过全,.....但是我觉得增删改查是必须的,以前一直不会用ArrayList 自定义对象....... 案例如下:自己根 ...
- git commit -m 和 git commit -am 区别
git commit -m 和 git commit -am 通常修改一个文件 并且将文件提交到本地分支的命令是: git add . git commit -m 'update' 以上两个命令其实可 ...
- 学校算法作业X——(日期问题)
最近一直在忙项目,难得有时间写一下作业,所以断了,现在赶紧续上 题目如下: 日历问题 问题描述 在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外, ...
- 小程序开发顶部TAB栏和侧边分类点击
先上一个效果图: 根据这个效果图我来说内容. 首先是顶部tab栏 效果实现依靠的是一个组件scroll-view.这个组件很有意思,可以多层嵌套,当然它的属性也很多. 这里主要用的是scroll-x, ...
- Erlang/Elixir精选-第5期(20200106)
The forgotten ideas in computer science-Joe Armestrong 在2020年的第一期里面,一起回顾2018年Joe的 The forgotten idea ...
- 【CF1154G】Minimum Possible LCM
题意 给你 \(n\) 个数 \(a_i\) ,求出 \(\text{lcm}\) 最小的一对数. \(n\le 10^6, a_i\le 10^7\) 题解 直接枚举 ,找到当前数最小的两个倍数,统 ...
- enlipse 快捷键
ctrl+shift+o 去掉多余的引用类