以C是面向对象的,C++、C#面向对象,这是两种思考方式
我其实觉得class 是一个高级的struct,但工作中,他们不愿意承认。
class 有封装继承与多态。
语法
[public] class 类名
{
字段;
属性;
方法;
}
类是不占内存的?这个我尚疑问,实例化才占内存。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace stClass
{
class Program
{
static void Main(string[] args)
{
stClass2 persion = new stClass2();//实例化
//Console.WriteLine( persion.ToString()) ;
persion.age = 21;
persion.gender = "male";
persion.name = "jocob";
//Console.WriteLine(persion.age);
persion.Run();
Console.ReadLine();
}
}
}
加入另外一个类作为调用、引用。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace stClass
{
class stClass2
{
public string name;
public int age;
public string gender;
public void Run()
{
Console.WriteLine("I am " + name + ",age " + age + ", "+ gender + ",love running.");
Console.WriteLine("I am " + this.name + ",age " + this.age + ", " + this.gender + ",love running.");
}
}
}
属性
属性,对字段的幅值和取值进行限定,作用在保护字段。
属性要写在类当中。
本质就是一个get,一个设置。
比如,我们上面对名字进行设置属性。
set 进行限定
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace stClass
{
class stClass2
{
private string name;
public string Name
{
set { name = value; }
get { return name; }
}
public int age;
public string gender;
public void Run()
{
Console.WriteLine("I am " + name + ",age " + age + ", "+ gender + ",love running.");
Console.WriteLine("I am " + this.Name + ",age " + this.age + ", " + this.gender + ",love running.");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace stClass
{
class Program
{
static void Main(string[] args)
{
stClass2 persion = new stClass2();//实例化
//Console.WriteLine( persion.ToString()) ;
persion.age = 21;
persion.gender = "male";
persion.Name = "jocob";
//Console.WriteLine(persion.age);
persion.Run();
Console.ReadLine();
}
}
}
构造函数:用来初始化对象,但在创造对象才会被执行。构造函数,不能写void也不能写返回值,也必须和类名一样的。
析构函数:程序结束时会执行,做扫尾工作,但GC会帮我们做。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace stClass
{
class Program
{
static void Main(string[] args)
{
stClass2 persion = new stClass2("jocob",21,"male");//实例化
//Console.WriteLine( persion.ToString()) ;
//persion.age = 21;
//persion.gender = "male";
//persion.Name = "jocob";
//Console.WriteLine(persion.age);
persion.Run();
Console.ReadLine();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace stClass
{
class stClass2
{
public stClass2(string name,int age,string gender)
{
this.Name = name;
this.gender = gender;
this.age = age;
}
private string name;
public string Name
{
set { name = value; }
get { return name; }
}
public int age;
public string gender;
public void Run()
{
Console.WriteLine("I am " + name + ",age " + age + ", "+ gender + ",love running.");
Console.WriteLine("I am " + this.Name + ",age " + this.age + ", " + this.gender + ",love running.");
}
}
}
关键字new
1创建对象
2、隐藏从父类那时继承过来的同名成员,
(有点像是ovverwrite.但我忘记overwrie是哪里的语言,我现在是不用了。)