C#中的class和interface

(1)C#中的class

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;
        }
    }
}

(2)C#类中的属性

public int Age 
        {
            get //get从旧内存中取值
            {
                return age + 10;
            }
            set //set向内存中写值
            {
                age = value - 10;
            }
        }
        //比如age,如果默认是0,直接调用person.Age,结果是10。如果给person.Age = 10;赋值,结果是0

(3)C#的interface

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();
    }
}

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

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.接口中不能定义字段

总结:

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

feihu分享到:

          

You may also like...

Scroll Up