C#——结构和类

1.结构 struct 没()

结构是一种值类型,通常用来封装一组相关的变量,结构中可以包括构造函数、常量、字段、方法、属性、运算符、事件和嵌套类型等。如果要同时包括上述集中成员,则应该考虑使用类。

结构修饰符 struct 结构名

{

}

在结构声明中,除非字段被声明为const或static,否则无法初始化。

需要实例化结构,才可以对结构进行使用。

也可以使用构造函数实例化结构。

using System;

namespace _11

{

    internal class Program

    {

        static void Main(string[] args)

        {

            Rect rect1; //实例化矩形结构

            rect1.width = 10; //为矩形的宽和高赋值

            rect1.height = 10;

            Console.WriteLine(rect1.Area());

            //Rect rect2 = new Rect(6,4); //使用构造函数实例化矩形结构

            //Console.WriteLine(rect2.Area());

        }

        public struct Rect //定义一个矩形结构

        {

            public double width;

            public double height;

            //public Rect(double x, double y)  //构造函数 初始化矩形的宽和高

            //{

            //    width = x;

            //    height = y;

            //}

            public double Area() //矩形面积

            {

                return width * height;

            }

        }

    }

}

2.面向对象概述

①对象

在面向对象中,算法和数据结构被看作一个整体,称为对象。对象=(算法+数据结构)

程序=(对象+对象+……)

通常都会将对象划分成两个部分,即动态部分和静态部分。

静态部分就是不能动的部分,这个部分被称为属性,任何对象都会具备其自身属性。

动态部分为行为。

②类

类是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体被称为类。

③封装

面向对象程序设计具有以下特点:

封装性、继承性、多态性

封装是将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体就是类。

④继承

继承关系可以使用树形关系来表示,父类和子类存在一种层次关系。一个类处于继承体系中,它既可以是其他类的父类,为其他类提供属性和行为,也可以是其他类的子类,继承父类的属性和行为。

⑤多态

将父类对象应用于子类的特征就是多态。

3.类 class 没()

类是对象概念在面向对象编程语言中的反应,是相同对象的集合。

①类的声明

类修饰符 class 类名

{}

②构造函数和析构函数

构造函数和析构函数是类中比较特殊的两种成员函数,主要用来对对象进行初始化和回收对象资源。

对象的生命周期从构造函数开始,以析构函数结束。

③构造函数的概念和使用

构造函数是在创建给定类型的对象时执行的类方法。

构造函数具有与类相同的名称,它通常初始化新对象的数据成员。

例:

using System;

namespace gouzaohanshu

{

    class Program

    {

        public int x = 1; //定义int型变量

        public int y = 2;

        public int z = 0;

        public Program() //在构造函数中为和赋值

        {

            z = x + y;

        }

        static void Main(string[] args)

        {

            Program program = new Program(); //使用构造函数实例化Program对象

            Console.WriteLine(program.z); //使用实例化的Program对象输出加法运算的和

        }

    }

}

析构函数的概念及使用

析构函数是以类名加“~”来命名的。

4.对象的创建和使用

①对象的创建

在C#语言中通过new操作符来创建对象

Test test = new Test();

Test test = new Test(“a”);

其中 Test为类名;test为创建Test类对象;new为创建对象操作符;”a”为构造函数的参数。

namespace Creatrd

{

    public class CreateObjext

    {

        public CreateObjext()  //构造函数

        {

            Console.WriteLine("创建对象");

        }

        public static void Main(string[] args) //主方法

        {

            new CreateObjext(); //创建对象 在创建对象的同时,将自动调用构造函数中的代码

        }

    }

}

②访问对象的属性和行为

当使用new操作符创建了一个对象后,可以使用“对象.类成员”来获取对象的属性和行为。

(自己的理解):创建对象时一定要有构造函数,在创建对象的同时,将自动调用构造函数中的代码。若要访问对象的属性和行为,则构造函数内部可以是空,但是一定要有构造函数,构造函数名要与类名相。在创建两个对象,调用同一个成员变量时,两个对象是相互独立的,对其中的一个对象的成员变量进行赋值,不影响另一个对象的成员变量的值。

③对象的引用

类名 对象引用名称

例如:Book book;

            Book book = new Book();

其中Book为类名;book为对象;new为创建对象操作符。

④对象的销毁

每个对象都有生命周期,当对象的生命周期结束时,分配给该对象的内存地址将会被收回。

主要包括以下两种情况:

a.对象引用超过其作用范围,则这个对象将被视为垃圾。

{

       Example e = new Example();

}

b.将对象赋值为null

{

       Example e = new Example();

       e = null;

}

5.this关键字

private void setName(String name)

{

       this.name = name;

}

其中,this.name中的name指Book类中的name成员变量;第二个name指形参name。

this还可以作为方法的返回值。

public Book getBook()

{

       return this;

}

在getBook()方法中,方法的返回值为Book类,所以方法体中使用return this这种形式将Book类的对象进行返回。

5.类与对象的关系

类是一种抽象的数据类型,但是其抽象的程度可能不同,而对象就是一个类的实例。例如,农民工是一个类,那么张三和李四就可以各为一个对象。

6.类的面向对象特性

①类的封装

namespace leidfz

{

    class Myclass //自定义类,封装加数和被加数属性

    {

        private int x = 0; //定义int型变量,作为加数

        private int y = 0; //定义int型变量,作为被加数

        public int X //加数

       {

            get

            {

                return x;

            }

            set

            {

                x = value;

            }

        }

        public int Y //被加数

        {

            get

            {

                return y;

            }

            set

            {

                y = value;

            }

        }

        public int Add() //求和

        {

            return X + Y;

        }

    }

    class Program

    {

        static void Main(string[] args)

        {

            Myclass myclass = new Myclass(); //实例化Myclass的对象

            myclass.X = 1; //为Myclass类中的属性赋值

            myclass.Y = 2;

            Console.WriteLine(myclass.Add()); //调用Myclass类中的Add()方法求和

            Console.ReadLine();

        }

    }

}

②类的继承

任何类都可以从另外一个类继承。

类继承时,需要使用冒号加类名。当对一个类应用sealed修饰符时,此修饰符会阻止其他类从该类继承。

namespace leijc

{

    class Myclass1

    {

        private int x = 0;

        private int y = 0;

        public int X

        {

            get { return x; }

            set { x = value; }

        }

        public int Y

        {

            get { return y; }

            set { y = value; }

        }

        public int Add1()

        {

            return X + Y;

        }

    }

    class Myclass2:Myclass1 //自定义类,该类继承Myclass1

    {

        private int z = 0;

        public int Z

        {

            get { return z; }

            set { z = value; }

        }

        public int Add2()

        {

            return X+Y+Z;

        }

    }

    class Program

    {

        static void Main(string[] arg)

        {

            Myclass1 my1 = new Myclass1();

            Myclass2 my2 = new Myclass2();

            my1.X = 1;

            my1.Y = 2;

            my2.X = 3;

            my2.Y = 4;

            my2.Z = 3;

            Console.WriteLine(my1.Add1()); //3

            Console.WriteLine(my2.Add1()); //7

            Console.WriteLine(my2.Add2()); //10

        }

    }

}

6.类的多态

多态使子类(派生类)的实例可以直接赋予基类的变量,然后直接就可以通过这个变量调用子诶(派生类)的方法。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值