C#概念总结(三)

1、定义结构体

定义了结构体,必须使用了stuct语句,struct定义了一个带有多个成员的的新数据类型。C# 的结构不同于C的。具有一下等特点:

结构可以有方法。字段、索引、属性、运算方法和事件。结构可以定义构造函数,但是不能定义析构函数,也不能定义默认的构造函数。与类不同得失结构不能继承其他结构。或者类、结构不能作为其他结构的基础捉着类。结构可以实现一个或者对个接口。

结构成员不能是abstract 、vritual 、protected 。当我们使用new 操作符创建一个结构对象的时候。会调用适当的构造函数创建结构。与类不同,结构可以不适用new 关键字既可以被实例化。 如果不适用new 操作符。只有在所用的字段都内初始化之后,字段才会被赋值。对象才会被使用,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
struct book {
    public String book_title;
    public String book_name;
    public String book_subject;
    public int book_id;
    public void getValue(String t, String a, String b, String d, int n) {
        book_title = a;
        book_name = b;
        book_subject=t;
        book_id=n;
    }
    public void display() {
        Console.WriteLine("Title {0}", book_name);
        Console.WriteLine("book_title {0}", book_title);
        Console.WriteLine("book_subject {0}", book_subject);
        Console.WriteLine("book_id {0}", book_id);
        Console.WriteLine("book_name {0}", book_name);
    }
        
}

namespace ConsoleApplication12
{
    class Program
    {
        static void Main(string[] args)
        {
            book book1 = new book();
            book book2 = new book();
            book1.getValue("c programer", "C #", "java", "编程语言", 12412312);
            book2.getValue("python programer", "c++ ", "java", "编程语言", 124123412);
            book1.display();
            book2.display();
            Console.ReadLine();
            Console.ReadKey();
        }
    }
}
2、C#枚举类型:  枚举类型是一组命名整数常量,枚举类型使用enum关键字声明。   C#枚举是值类型,枚举包含自己的值,且不能继承传递。

enum  <enum_name>  {enumeration list  } ;

C#概念总结(三)

3、当你定义一个类的时候,你定义了一个数据类型的蓝图,这实际上没哟与定义任何的数据,但是他定义了类的名称,意味着类的对象有什么组成以及这个对象上可执行是么样的操作,对象是实例额的,构成类的方法和变量成为类的成员。

类的默认访问标志符是internal   ,成员的默认访问标志符是 private

类的成员函数是一个类定义中有他定义或者原型函数,就像其他变量一样作为一个类的成员,他能在类的任何对象上操作。且能访问该对象的类的所有成员。

C#中的构造函数是一个特殊的函数成员,当创建类的新对象时候执行。 构造函数的名称和类的名称相同,他没有任何的返回类型。下面说明构造函数返回类型。

默认构造函数没有任何的参数。但是如果需要一个带有参数的构造函数,这种构造函数的参数叫做参数化的构造函数,这种技术可以使得创建函数的时候对给的对象赋值初始化。具体的实例如下:

C#中的析构函数 是一个特殊的成员函数,当类的对象超出范围时执行。析构函数的名称是再去爱类的名称之前加上一个~线,他不返回值,也不带任何参数。

析构函数用于在结束程序之前石峰资源,西沟函数不能继承和重载。

C#类的静态成员

我们可以使用static 关键字吧雷闯元定义我建泰的,当我们声明静态的时候,意味无论多少个里类的对象来创建,只会有一个静态成员的副本。声明为静态的变量可以直接通过类来调用。静态冰凉可以在成员函数或者类的定义外部进行初始化,也可以在类的定义内部初始化静态变量。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication17
{
    class Static {
        public static int num;
        public void count()
        {
            num++;
        }
        public int getNum()
        {
            return num;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Static s1 = new Static();
            s1.count();
            s1.count();
            s1.count();
            Console.WriteLine("s1的变量num {0}", s1.getNum());
            Console.ReadLine();
            Console.ReadLine();

}
    }
}
4、C#继承

继承是面向对象小衡虚设计中的重要概念,继承允许我们根据一个类定义类定义另一个类,这使得创建和维护应用程序变得简单,同时节约了开发的时间。当创建一个类的时候,程序员不需要重新编写新的数据成员函数,只需要设计一个新的类,继承了集资的类的成员即可已有的类被称为基类,这个新的类叫做派生类。

集成的思想实现了 (is_A)的关系。一个类可以派生多个类或者接口。 这就意味着从这个基类或者接口继承数据和函数。C#继承不同于Java的继承  Java继承使用的是 extends关键字。

派生类继承了街垒的成员和方法,因此父类对象在子类对象创建之前被创建,

多重继承,是指一个类可以同时从多余一个父类继承行为与特征的功能,与单一继承相对,单一继承指一个类只可以继承一个父类,C#不支持多重继承,但是课可以使用接口类实现多重继承的效果。

下面就单纯的接口做一个简单的列子:

using System

namespace inheritanceApplication

{

class  shap{

public void setWidth(int w){

width=w;

}

public void setHeight(int h){

height=h;}

}

protected int height;

protected int width;

}

public interface Paintcost{

int getCost(int area);

}

public Rectangle:shape,Paintcost{

public int getArea(){

return width*height;

}

public int getcost(int area){

return area=23;

}

}

6、C#多态性

多态性意味着多重形式,在面向对象编程的范畴中,多态性往往表现为一个接口多个功能。多态性可以使静态的多态也可以是动态的多态。静态多态中,函数的响应式在编译时发生,动态的的多态函数的响应是运行时发生。

静态多态性: 在编译的时候,函数和对象的链接机制被称为早期的绑定,也称为静态绑定,C#提供两种技术来事项静态的多态性。分别为函数的重载,和云算符的重载。

函数重载:可以在同一个范围内对相同的函数名有多个定义,函数定义必须彼此不同,可以是参数列表中的参数不同,也可以是参数的个数不同。不能重载只有返回类型不同的函数声明。

动态多态性:C#允许使用关键字abstract创建抽象类,用于提供接口的部分类的试下,当一个派生类继承自该抽象类时,实现即完成,抽象类包含抽象方法,抽象方法可以被派生实现,派生具有更加专业的功能。通过类定义前面放置关键字sealed,可以将类声明成密封类,当一个类被声明成密封类的时候,他不能被继承,抽象类不能被声明为sealed。

using System;
namespace PolymorphismApplication
{
abstract class Shape
{
public abstract int area();
}
class Rectangle: Shape
{
private int length;
private int width;
public Rectangle( int a=0, int b=0)
{
length = a;
width = b;
}
public override int area ()
{
Console.WriteLine("Rectangle 类的面积:");
return (width * length);
}
} class RectangleTester
{
static void Main(string[] args)
{
Rectangle r = new Rectangle(10, 7);
double a = r.area();
Console.WriteLine("面积: {0}",a);
Console.ReadKey();
} }
上一篇:Django REST framework 第一章 Serialization


下一篇:spring boot 启动错误:Could not resolve placeholder