5月31日笔记

1 、“ Ctrl+E+\ ”删除空白字符。
2 、多态:为了程序的可扩展性。开放封闭原则:对修改关闭,对扩展开放。
3 、父类不能访问子类特有的方法。
4 、里氏替换原则:当需要一个父类类型对象的时候,可以给一个子类类型对象。  Person p=new Chinese(); 当需要子类类型时候,给一个父类是不可以的。把子类类型赋值给父类类型发生了隐式转换,把父类类型变量赋值给子类类型,需要显示类型转换。前提是如果这个父类类型变量  p 中,指向的确实是一个子类对象,则可以显式转换。为了避免显示类型转换报异常,可以先判断下。  chinese cn=p as chinese(). 通过 as  进行类型转换时候,如果转换失败也不报异常,只是会返回  null 。推荐使用 as  转换,只进行一次类型验证。
5 object  是没有父类的,所以  object 的父类是 null  GetType ()是通过反射实现的。
6 abstract 抽象, public abstract void Show(); 1抽象成员必须标记为 abstract,抽象方法不能有任何方法体(不能有任何实现)。 2这个类也必须标记为抽象类,抽象成员必须写在抽象类中,不能写在普通类中。 3父类中的抽象成员,子类继承后,必须重写,除非子类也是一个抽象类,可以不重写。抽象成员不能是 private私有的。4 抽象属性没有任何实现(不要与自动属性误解)。 5抽象类不能被实例化(抽象类的作用就是为了继承); 6抽象类中可以包含实例成员。 7抽象类是有构造函数,虽然不能被实例化。 8抽象类就是为了重写→多态(代码重用)。
8 如果父类中的方法有默认的实现,并且父类需要被实例化,这时候可以考虑将父类定义成一个普通类,用虚方法来实现多态。如果父类中的方法没有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类。
9 、类中成员如果不写访问修饰符,默认为私有的。
10 return  ,必须要有变量去接收。
11 new  关键字原来隐藏父类的方法。
12 、接口:就是一种规范,协议,约好遵守某种规范就可以写通用的代码。定义了一组具有各种功能的方法。接口名以  I 开头。
public interface IFlyable
{
         //  接口中只能包含方法(方法,属性,索引器,事件),接口中的方法不能有任何实现(就行抽象方法一样,直接加一个分号);接口中的成员不能有任何访问修饰符,默认为  public 。接口也不能被实例化。
         void Fly();
}
class Person IFlyable
{
}
实现接口的类,必须实现接口中所有 的成员。
13 、接口存在的意义:多态。
14 为什么要用接口:1类不能多继承,所以在某种情况下,只能用接口来替代,因为接口可以多实现。2接口的主要目的就是为了多态。3、当一个类同时继承了某个类,并且也实现了某些接口的时候,必须要将继承的类写在第一个,然后再写接口,不能把接口写在前面。 当多个类型,都具有某个或某几个功能时(方法),但是这几个类型又分属于不同的系列(这几个类型没有共同的父类)所以这时,为了实现多态就可以考虑把这几个类型共有的方法提取一个接口中,让这几个类型分别实现该接口。
15 、接口与接口之间的继承。类与接口之间叫实现。建议不要在一个接口中写过多的方法,避免造成接口污染,可以编写多个接口,在每个接口中,分别定义方法。 接口中的所有成员必须都被子类中全部实现。
16 、实现接口的时候不需要  override 关键字,直接写方法就行了。
17 、规范:就是告诉我们要做什么具有什么能力。规范目的就是为了后面的代码实现多态。多态,可以让我们编写通用的代码,提高程序的可扩展性。

抽象类和接口的区别
接口定义类的公共行为,抽象类定义类的公共实现
一个类只能继承自一个类(抽象类),但是可以同时实现多个接口
接口中不能有实现,抽象类中可以有未实现成员也可以有实现的成员
接口中未实现的方法必须在子类中实现,抽象类中未实现的成员必须在子类中重写
好的接口定义应该是具有专一功能性的,而不是多功能的,否则造成接口污染。如果一个类只是实现了这个接口的中一个功能,而不得不去实现接口中的其他方法,就叫接口污染。   

什么时候使用抽象类,什么时候使用接口
抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。
1.飞机会飞,鸟会飞,他们都继承了同一个接口“飞”;但是F22属于飞机抽象类,鸽子属于鸟抽象类。2. 就像铁门木门都是门(抽象类),你想要个门我给不了(不能实例化),但我可以给你个具体的铁门或木门(多态);而且只能是门,你不能说它是窗(单继承);一个门可以有锁(接口)也可以有门铃(多实现)。门(抽象类)定义了你是什么,接口(锁)规定了你能做什么(一个接口最好只能做一件事,你不能要求锁也能发出声音吧(接口污染))。

虚方法和抽象方法的区别
虚方法必须有实现,抽象方法必须没有实现
抽象方法必须在抽象类中声明,虚方法可以出现在抽象类中
抽象方法必须在子类中重写,虚方法可以被重写

实现多态的主要手段:
1.虚方法virtual
2.抽象方法abstract
3.接口。

关于虚方法需要注意的几点:
1.父类中如果有方法需要让子类重写,则可以将该方法标记为virtual
2.虚方法在父类中必须有实现,哪怕是空实现。
3.虚方法子类可以重写(override),也可以不重写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值