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;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
    public class Employee
    {
        private float sum;
        public int day;
        public float wage;
        //定义方法输出工资信息
        public void Show()
        {
            sum = day * wage;
            Console.WriteLine("工作时间:{0},每天工资:{1},总工资:{2}",day,wage,sum);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Employee employee = new Employee();
            employee.day = 20;
            employee.wage = 50;
            //employee.sum:无法访问  因为它为私有成员
            //调用方法现实工资
            employee.Show();
        }
    }
}

三、实例化对象:关键字:new

语法:

类 对象名称=new 类();

例:

代码如下

复制代码

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
  
namespace ConsoleApplication1 

    public class car 
    { 
        private string carName; 
        private string carType; 
        private int price; 
  
        public string CarName 
        { 
            get { return carName; } 
            set { carName = value; } 
        } 
        public string CarType 
        { 
            get { return carType; } 
            set { carType = value; } 
        } 
        
        public int Price 
        { 
            get { return price; } 
            set { price = value; } 
        } 
  
        public void  action() 
        { 
            Console.WriteLine("一辆名叫{0}车,型号是{1},价钱是:{2}",carName,carType,price); 
        } 
          
    } 
  
    //创建实例并访问字段和方法 
    class Program 
    { 
        static void Main(string[] args) 
        { 
            //创建car类的实例 
            car vehicle = new car(); 
           //给实例赋值 
            vehicle.CarName = "奔驰"; 
            vehicle.CarType = "XZ001"; 
            vehicle.Price = 1000000; 
  
            //调用方法 
            vehicle.action(); 
  
  
  
        } 
    } 
}

四、属性

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#类、对象、方法和属性详解的更多相关文章

  1. JavaScript对象的property属性详解

    JavaScript对象的property属性详解:https://www.jb51.net/article/48594.htm JS原型与原型链终极详解_proto_.prototype及const ...

  2. 第15.10节 PyQt(Python+Qt)入门学习:Qt Designer可视化设计界面组件与QWidget类相关的组件属性详解

    PyQt学习有阵子了,对章节的骨架基本考虑好了,准备本节就写组件的属性的,结果一是日常工作繁忙,经常晚上还要加班,二是Qt的组件属性很多,只能逐一学习.研究和整理,花的时间有点长,不过终于将可视化设计 ...

  3. 【转】HTML embed标签使用方法和属性详解

    一.基本语法 代码如下: embed src=url 说明:embed可以用来插入各种多媒体,格式可以是 Midi.Wav.AIFF.AU.MP3等等,Netscape及新版的IE 都支持.url为音 ...

  4. Vue.js 源码分析(五) 基础篇 方法 methods属性详解

    methods中定义了Vue实例的方法,官网是这样介绍的: 例如:: <!DOCTYPE html> <html lang="en"> <head&g ...

  5. HTML embed标签使用方法和属性详解

    一.基本语法   代码如下:   embed src=url   说明:embed可以用来插入各种多媒体,格式可以是 Midi.Wav.AIFF.AU.MP3等等,Netscape及新版的IE 都支持 ...

  6. arguments对象的callee属性详解

    在函数内部,有两个特殊的对象:arguments和this. argument对象有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数.请看下面这个非常经典的阶乘函 ...

  7. 007-Scala类的属性和对象私有字段实战详解

    007-Scala类的属性和对象私有字段实战详解 Scala类的使用实战 变量里的类必须赋初值 def函数时如果没参数可不带括号 2.不需要加Public声明 getter与setter实战 gett ...

  8. Dream------scala--类的属性和对象私有字段实战详解

    Scala类的属性和对象私有字段实战详解 一.类的属性 scala类的属性跟java有比较大的不同,需要注意的是对象的私有(private)字段 1.私有字段:字段必须初始化(当然即使不是私有字段也要 ...

  9. Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量

    Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量 一丶线程的理论知识 什么是线程:    1.线程是一堆指令,是操作系统调度 ...

随机推荐

  1. MQTT v5 (MQTT 5.0) 新特性介绍

    https://blog.csdn.net/mrpre/article/details/87267400 背景 MQTT v3.1.1 作为一个经典的版本,一般能够满足大部分需求:为了避免落后,我们也 ...

  2. 响应式布局rem的使用

    在如今移动端,响应式布局的时代,用rem作为单位已经是非常普及的一门小技巧了..rem的单位根据html的font-size来进行换算! 1.rem的兼容性: 如下图所示IE9以上就支持了rem这个属 ...

  3. ubuntu18.04.2 Hadoop伪集群搭建

    准备工作: 若没有下载vim请下载vim 若出现 Could not get lock /var/lib/dpkg/lock 问题请参考: https://jingyan.baidu.com/arti ...

  4. python记事本实现查询替换

    python 大作业 自己写了记事本  也参考网上的  查询会有点问题 替换没问题 # encoding=utf- from tkinter import * from tkinter.filedia ...

  5. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-minus

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  6. JuJu团队12月4号工作汇报

    JuJu团队12月4号工作汇报 JuJu   Scrum 团队成员 今日工作 剩余任务 困难 于达 调试 无 无 婷婷 和陈灿一起提升acc 无 无 恩升 纠正chunk evaluator 无 无 ...

  7. python_os 的知识点

    1. os.getcwd() #获得当前路径 2. os.listdir(path) #列出path路径下的所有目录名和文件名包括后缀 3. os.mkdir(path) #在path创建一个目录 4 ...

  8. thinkphp配置到二级目录,不配置到根目录,访问除首页的其他路径都是404报错

    1.在nginx的配置里面,进行重定向 vi /etc/nginx/conf.d/default.conf 2.进入编辑 location /thinkphp/public { if (!-e $re ...

  9. Prime Ring Problem素数环(HDU1016)

    Prime Ring Problem 思路:先看成一条链,往里头填数,满足任意相邻两数和为质数(这可以打表预处理出40以内的所有质数,扩展的时候枚举),填完了后检查首尾是否满足条件.字典序可以采用扩展 ...

  10. lvm 通过扩容本身磁盘容量扩容

    场景:sdb之前是3G容量,现在扩容了sdb的容量到8G.现在把新扩容的5G容量扩展到现有的逻辑卷中 [root@localhost ~]# pvresize /dev/sdb  Physical v ...