大家可以关注下我的微信公众号

.NET学习笔记

程序开发 admin 1014℃ 0评论

new关键字隐藏父类继承过来的方法。

因为没有通过override重写父类的方法,所以通过父类类型变量调用Say()方法的时候访问的还是父类自己的方法(子类没有重写!!!!)

1。值类型的数据类型大小是固定的。存储在栈上。

2.引用类型的大小是不固定的,存储在栈和堆上。

ref表示“引用传递”,引用传递传递的不是栈中的数据(对于值类型来说栈中直接保存数据,对于引用类型来说栈中保存的是“对象的地址”),而是栈本身的地址。

 

接口里面只能包含方法(事件,属性,索引器)

接口中的成员不能有访问修饰符,默认public’

接口中德成员都不能被实现

接口不能被实例化

接口中的成员不能有访问修饰符,隐式公开public

实现接口的子类必须把接口的所有成员都实现

避免写一个庞大的接口,避免接口污染

 

public interface ISupperMan

{

//1.接口里面只能包含方法(事件、属性、索引器)

//2.接口中的成员不能有访问修饰符默认是public

void Fly();

}

实现接口的类必须把接口中的所有成员都实现。

 

面试题:接口中能定义什么?

接口中可以定义方法、属性、索引器。因为属性、索引器本质上也是方法。

接口中不能定义字段,因为字段是实现。

接口解决了多继承的问题,不同类型的东西有相同一种能力时可以使用接口

显示实现接口的目的就是为了解决方法重名的问题。

枚举是为了方便

多个枚举值p.State = GoodPeople.高 | GoodPeople.帅;

判断标志枚举中是否包含某项用&

请找出ren的所有的父类。

Console.WriteLine(ren.GetType());

Console.WriteLine(ren.GetType().BaseType);

// 循环获取父类

        static void Main(string[] args)

        {

            Henan ren=new Henan();

            System.Type str = ren.GetType().BaseType;

            while(str!=null)

            {

                Console.WriteLine(str);

                str = str.BaseType;

            }

        }

   //不想让子类继续重写该方法时,可以用sealed关键字标记该方法

        //sealed必须与override一起使用。

        publicsealedoverridevoid SayHi()

        {

            //base.SayHi();

        }

多态性的含义:使得能够利用基类的指针来引用不同子类的对象,以及根据所引用对象的不同,以不同的方式执行相同的操作。

多态的作用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。(多态)

  1. virtual,子类重写父类中的方法。

  1. abstract,子类重写父类中的方法。

3.接口,实现接口的类,将接口中的方法实现

抽象类:

抽象类存在的意义

l  1.抽象类不能被实例化,只能被其他类继承

l  2.继承抽象类的子类必须把抽象类中的所有抽象成员都重写(实现)(除非子类也是抽象类。)

l  3.抽象类就是为了重写→多态(代码重用)。

l  4.抽象类中可以有实例成员也可以有抽象成员。

l  5. 还有抽象方法不能用static修饰

 

什么时候用虚方法?什么时候用抽象方法?

虚方法:

1.父类中必须有实现。

2.子类中可以不重写。

3.虚方法可以在普通类中。(有序方法的类是可以(可能)被实例化的。)

抽象法:

1.父类中不能有任何实现。

2.子类中必须重写(除非:子类也是一个抽象类。)

3.抽象方法必须在抽象类中。

 

转载请注明:程序人生 » .NET学习笔记

喜欢 (0)or分享 (0)