C#中的class和interface

C#中的class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
namespace Class和interface
{
class Program
{
static void Main(string[] args)
{
Person person = new Person();
Console.WriteLine(person.GetAge(1));
//调用时使用实例化的对象调用
Console.WriteLine(Person.GetFive());
//static方法使用时直接使用"类名.方法"调用,不能使用实例化后的对象调用
//静态的方法或字段是存储在class类上的,不能实例化
}
}
class Person
{ //可以包含字段、方法、属性
int age;
public int GetAge(int Mage)
{
this.age=Mage;//this表示当前class实例化后的对象,因为在自己的class中可以省略this不写
return age;
}
public static int GetFive()
{
return 5;
}
}
}

C#类中的属性

1
2
3
4
5
6
7
8
9
10
11
12
public int Age 
{
get //get从旧内存中取值
{
return age + 10;
}
set //set向内存中写值
{
age = value - 10;
}
}
//比如age,如果默认是0,直接调用person.Age,结果是10。如果给person.Age = 10;赋值,结果是0

C#的interface

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
namespace demo_interface
{
class Program
{
static void Main(string[] args)
{
Person person = new Person();
Console.WriteLine(person.GetSuper());//11
}
}

class Person : ISuper //类只能继承一个类但是能继承多个接口
{ //Person类如果继承了接口ISuper接口,那类中必须要实现接口里面声明的方法,否则编译不通过
int age = 1;
public int GetSuper()
{
return age + 10;
}
}
interface ISuper
{

int GetSuper();
}
}

abstract class和interface的区别(C#常考面试题)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
namespace 抽象类和接口的不同
{
class Program
{
static void Main(string[] args)
{
Person person = new Person();
Console.WriteLine(person.GetAbstract());//5
}
}
abstract class Man //与普通类不同,抽象类不能被实例化,它是用来被其他类进行继承的,在继承它的类中去实现其中声明的方法
{
public abstract int GetAbstract();
//声明了一个抽象的方法
}
class Person : Man //同接口相同继承了抽象类,必须要实现其中声明的方法,否则编译不通过
{
public override int GetAbstract()//重写进行实现
{
return 5;
}
}
}

接口和抽象类的区别:

1.接口中定义了一个方法,在继承它的类中就必须实现,而抽象类终究是一个类,它有类的特性,不但可以有抽象的方法,还可以定义一些常规的方法,字段。

2.接口中不能定义字段

总结:

抽象类依然是一个类,它不能被实例化,它可以包含字段或者成员变量,或者抽象方法和不抽象的方法,一个类继承了这个抽象类,它只需要实现一些抽象类中抽象的方法,而其他的是可以得到继承的。接口相当于是一个规则,它里面只能有方法、属性、索引和事件,它不能有成员变量(字段),一个类只能继承一个类,它可以继承多个接口,接口里面的所有的方法不许由继承它的类去实现。

推荐文章