射阳建设网站,网站开发招标采购需求,如何查看一个网站的域名解析,企业网站模板包含什么类
实例类
默认是实例类
静态类
在类前加上static ,就是静态类
静态类中#xff0c;所有包含的成员必须是静态成员
实例成员是属于具体某个对象的
举例代码
Person p1 new Person(); p1.Age 20; p1.Name “张三”;
class Person { public string Name { get; set;…类
实例类
默认是实例类
静态类
在类前加上static ,就是静态类
静态类中所有包含的成员必须是静态成员
实例成员是属于具体某个对象的
举例代码
Person p1 new Person(); p1.Age 20; p1.Name “张三”;
class Person { public string Name { get; set; } public int Id { get; set; } public string FirstName { get; set; } public int Age { get; set; } }
静态成员 静态成员是属于类的实例成员属于对象的 Person p1 new Person(); p1.Age 20; p1.Name “张三”; Person.Country “中国”;
Person p2 new Person(); p2.Age 30; p2.Name “李四”;
Console.WriteLine(p1.Name); Console.WriteLine(Person.Country);
static class Myclass { // 静态类中所有包含的成员必须是静态成员 static void M1() {
}}
class Person { public string Name { get; set; } public int Id { get; set; } public string FirstName { get; set; } public int Age { get; set; }
// 访问静态成员的时候不能通过对象来访问
// 只能类名访问
public static string Country { get; set; }}
注意
1静态成员的数据直到程序退出后才会释放资源 而实例对象只要使用完毕就会释放 2通用公用方法 3与具体对象无关 4工具方法
静态构造函数特点:
1, 静态构造函数不能手动来调用用是在第一次使用静态成员时自动调用 不能为静态构造函数添加访问修饰符默认为private 2, 静态构造函数不能传参原因是静态构造函数是系统自动调用的 3 只执行一次在第一次使用静态类或静态成员的时候执行
有静态构造函数实例构造函数时静态构造函数会先执行
举例代码
Myclass m1 new Myclass(); Console.WriteLine(“开始”); Myclass.n1 200; Console.WriteLine(Myclass.n1);
Console.ReadLine();
public class Myclass { public Myclass() { Console.WriteLine(“实例”); } // 静态类中所有包含的成员必须是静态成员
static Myclass()
{Console.WriteLine(静态构造函数);n1 100;
}public static int n1 ; static void M1() {
}}
多态为了程序的可扩展性
把不同的子类对象当作父类来看可以屏蔽不同子类的差异 写出通用代码做出通用编程以适应需求
使用as 的方式进行类型转换转换失败也不会报异常而是返回null
实现多态的方法
虚方法 抽象类 接口
在类前面加在 abstract
1抽象类可以有实例成员也可以有抽象成员 2 不能有任何实现 3 抽象成员必须 包含在抽象类中 4 抽象类不能用来实例化对象 5 抽象成员子类继承 以后必须重写 override,除非子类也是抽象类
主要目的是为了实现多态用来被继承
案例
学生类和老师类中抽象出父类Person,并让老师和学生都有Say和Standup方法 Person s1 new Student(); s1.Say(); s1.Standup(); Person s2 new Teacher(); s2.Say(); s2.Standup();
Console.ReadLine(); Console.ReadKey();
abstract class Person { public abstract void Say(); public abstract void Standup(); }
class Student : Person { public override void Say() { Console.WriteLine(“学生说”); }
public override void Standup()
{Console.WriteLine(学生Standup);
}}
class Teacher : Person { public override void Say() { Console.WriteLine(“老师说”); }
public override void Standup()
{Console.WriteLine(老师Standup);
}}
值类型栈 连续空间
int,char,double,float,long,short,byte,bool,enum,struct,decimal 值类型都是派生自ValueType 值类型不能继承 只能实现接口
引用类型堆栈中只存储了堆的地址
String, 数组类接口委托
int n 100; int m n; m m 1;
Console.WriteLine(n); Console.WriteLine(m);
Console.ReadKey();
Person p new Person(); p.Name “张三”; Person p1 p; p1.Name “李四”;
Console.WriteLine(p.Name); Console.ReadKey();
public class Person { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } }
参数传递方式
1 值传递—默认传递栈内容复制一份 2 引用传递 ref栈地址传递栈本身的地址 相同于给变量取了个别名
面试题
方法重载 overload与方法重写 override 区别 方法重载 overload 一个类中的几个方法重载在程序编译的时候就能确定 方法重写 override 父子类中才会出现重写只有程序运行时才能确定