1,简单使用
类是一个模版,决定了实例是什么样子。
实例是一堆数据,可以访问和修改。
类可以声明属性和方法。new关键字可以创建类的实例。
通过实例,可以:
访问实例的属性。
调用实例的方法。
namespace a {
class B {
public static void Main(String[] args) {
Student s1 = new Student();
s1.name = "张三";
s1.say();
}
}
class Student {
public string name;
public void say() {
Console.WriteLine($"我叫{
this.name}");
}
}
}
效果:
2,get,set方法
可以由这些方法访问属性。语义上更好操作。
namespace a {
class B {
public static void Main(String[] args) {
Student s1 = new Student();
s1.setName("张三");
s1.say();
}
}
class Student {
string name;
public void setName(string name) {
this.name = name;
}
public string getName() {
return this.name;
}
public void say() {
Console.WriteLine($"我叫{
this.getName()}");
}
}
}
效果:
也可以声明一个get,set属性。仅负责对外提供get,set方法,不保存数据。
namespace a {
class B {
public static void Main(String[] args) {
Student s1 = new Student();
s1.Name = "张三";
s1.say();
}
}
class Student {
private string name;
//本身没有数据
public string Name {
get => name; set => name = value; }
public void say() {
Console.WriteLine($"我叫{
this.Name}");
}
}
}
效果:
VS快捷键:选中属性,ctrlR,ctrlE。
3,static关键字
静态:类上的数据,可以直接由类名直接访问,比如Console。
非静态:实例上的数据,各个实例数据不影响。
4,构造方法
没有返回值,名称与类名一致。
namespace a {
class B {
public static void Main(String[] args) {
Student s1 = new Student("张三");
s1.say();
}
}
class Student {
private string name;
public Student(string name) {
this.name = name;
}
public void say() {
Console.WriteLine($"我叫{
this.name}");
}
}
}
参数:默认会有一个无参的构造。
如果声明了有参,就不会有那个无参,
想用的话,需要再手动声明一次。
public Student() {
}
public Student(string name) {
this.name = name;
}
5,this关键字
在类内部使用,代表当前实例。
加上括号,代表对应构造方法。
6,销毁方法
没有返回值,名称也与类名一致。多一个波浪线。
效果不容易观察。
class Student {
private string name;
public Student(string name) {
this.name = name;
}
~Student() {
Console.WriteLine("我回收啦!");
}
public void say() {
Console.WriteLine($"我叫{
this.name}");
}
}
7,命名空间
namespace可以管理类的包路径。
一个space内部默认只能访问自身内部的东西。
以下代码会报错:
namespace b {
class Program {
public static void Main(string[] args) {
Student s1 = new Student("张三");
s1.say();
}
}
}
namespace a {
class Student {
private string name;
public Student(string name) {
this.name = name;
}
~Student() {
Console.WriteLine("我回收啦!");
}
public void say() {
Console.WriteLine($"我叫{
name}");
}
}
}
用using可以引入space。
namespace b {
using a;
class Program {
public static void Main(string[] args) {
Student s1 = new Student("张三");
s1.say();
}
}
}
namespace a {
class Student {
private string name;
public Student(string name) {
this.name = name;
}
~Student() {
Console.WriteLine("我回收啦!");
}
public void say() {
Console.WriteLine($"我叫{
name}");
}
}
}