1.自动属性
2.接口的实现(正常实现,显示实现)
3.静态的初始化与生命周期
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _04自动属性
{
abstract class Person // 李村
{
private string name;
// 属性可读可写,没有约束
public string Name
{
get { return name; }
set { name = value; }
}
// 懒
public int Age
{
get;
set;
}
//未实现(接口里面的写法)
public abstract char Sex
{
get;
set;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _02接口
{
//public interface I1
//{
// void Func();
//}
//public interface I2
//{
// void Func();
//}
//class MyClass : I1, I2
//{
//}
public interface IMyInterface
{
// 接口里面可以有的成员:
// 方法、属性、索引、事件
// 是对能力的抽象
// 成员写法:1、不需要访问修饰符;2、没有方法体
void Func();
string Name
{
get;
set;
}
string this[int index]
{
get;
set;
}
event Action MyEvent;
}
// 实现接口:1、正常实现;2、显式实现
// 1、就像没有接口一样使用
class MyClass : IMyInterface
{
public void Func()
{
throw new NotImplementedException();
}
public string Name
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
public string this[int index]
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
public event Action MyEvent;
}
// 2、显式实现接口:
// 为什么要有:实现多个接口中有重名的方法
// 不要修饰符,使用接口名.成员名实现
class MyClass2 : IMyInterface
{
void IMyInterface.Func()
{
throw new NotImplementedException();
}
string IMyInterface.Name
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
string IMyInterface.this[int index]
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
event Action IMyInterface.MyEvent
{
add { throw new NotImplementedException(); }
remove { throw new NotImplementedException(); }
}
}
// 使用注意:显式实现的接口对象,只允许使用接口类型进行调用
public interface I
{
void Func();
}
class Class : I
{
void I.Func()
{
throw new NotImplementedException();
}
}
class Program
{
static void Main(string[] args)
{
Class c = new Class();
I i = c;
i.Func();
// 接口就是为了多态而诞生的
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _06静态的初始化与生命周期以及使用建议
{
// 静态在访问这个类型的第一次进行初始化,在程序结束后才会被释放资源
class MyClass
{
// public int numPublic = 10; // 这里的操作是构造方法做的,是为了方便程序员给的简单的语法
// public static int numStatic = 20;
public int numPublic;
public static int numStatic;
public MyClass()
{
numPublic = 10;
}
// 静态构造方法
static MyClass()
{
numStatic = 20;
// 静态构造方法目的在初始化静态成员,不允许手动调用
// 不允许有重载继承等内容
}
}
class Program
{
static void Main(string[] args)
{
MyClass m1 = new MyClass();
// 访问MyClass->初始化静态成员(调用静态构造方法)
// ->初始化实例成员(调用实例构造方法)
MyClass m2 = new MyClass();
// 访问MyClass->实例构造方法
}
}
}