Net学习日记_基础提高_6

抽象类方法

1.抽象方法用abstract修饰。

2.抽象方法不能有方法体,大括弧也不能有。

3.抽象方法必要再抽象类中。abstract class

4.抽象方法不能实例化,因为有抽象成员,而抽象成员是没有方法体的。

5.子类要实现,子类必须重写父类的抽象方法。(与virtual最大的不同)

6.在子类中无法通过base关键字,调用父类的抽象方法。

7.抽象方法是光说不做,只是定义了具有这样的行为,但是具体的实现交给子类。

8.抽象类中可以拥有非抽象成员,为了继承给他的子类。

9.抽象类中可以拥有虚方法。

10.子类必须重写父类的方法,父类没有必要实例化,就用抽象类

11.抽象类被继承,是为了多态。

12.抽象成员不能是私有的,因为子类没办法访问,就没办法重写。

案例:手机储存设备。

 

ToString()与Equal()

书写一个类,其实书写这个类的ToString()方法。书写是类名(p.GetType().ToString());

1. object类里面的equals方法是比较两个对象的引用地址,如果引用地址都一样,则返回True;

2. 引用类型(类)的Equals方法默认比较是两个对象的地址,如果要改变规则,则子类重写;

3. string 值类型 Equals方法比较的两个结构对象里字段的值(这时候不存在重写,只是值类型自己新增1方法);

 

接口

IRunable(接口命名)   I**able

interface定义1个接口;接口表示具有某种能力。(接口其实就是规范,而不是物理存在的东西)

 

1.接口是1个特殊的的抽象类。(里面所有方法默认都是抽象的,因此不能有访问修饰符,默认就是public)

2.接口不能实例化。(不能new)

3.接口内只能定义属性、方法、索引器、事件。

4.实现接口的类,必须要实现接口中的所有的成员。

5.实现类在实现接口的成员的时候,不要写override关键字

6.实现成员的时候,必须要保证签名的一致。

7.接口就是一个纯粹的为了规范实现类的。

8.string Name{get; set;} 这里不是自动属性,是个普通属性,只不过get、set方法没有实现

 

何时使用接口?

多个类具有相同的行为,但是没有共同的父类,就是使用接口。

 

接口与抽象类的区别?

抽象类:可以找到父类,并且可以通过父类继承给子类一些成员。

接口:找不到父类,并且解决单根性的问题。可以拥有多个接口。

 

1个类只能继承一个父类,但是可以实现多个接口。父类要写在第一个位置,一定程度上解决了类的单根性的问题。

接口也可以继承接口,并且可以多继承。

接口中的成员可以实现为抽象方法或者虚方法,让实现类的子类去实现。

abstract Person : ISingleable

{

 public abstract void Single();

}

 

interface ISingleable

{

void Single();

}

 

显示实现接口

class Animal:ISingleable

{

  public void Sing()

  {

  }

  void ISingleable.Sing()

  {

  }

}

显示实现接口是为了解决方法名冲突的问题,显示实现的接口的方法是私有的,所以不能通过对象的变量来调用。

但是我们可以通过接口对象来调用。

 

使用接口的建立:

面向对象编程,使用抽象(父类,抽象类,接口)不使用具体。

“向上转型”

在编程时,

1.接口->抽象类->父类->具体类

2.能使用接口就不使用抽象类,能使用抽象类就不是父类,能使用父类就不用子类。

3.避免定义“体积庞大的接口”、“多功能接口”、会造成“接口污染”。单一指着原则。

4.定义多个职责单一的接口(组合使用)。

以上要求,还是为了多态

 

装箱拆箱的问题

啥叫装箱(box)?将值类型转换成引用类型。(将栈里的值放入堆中)

int i = 12;

object obj = j;

啥叫拆箱()?将引用类型转换为值类型。(将堆的值强行放入栈中)

i = (int) obj;

装箱与拆箱是比较消耗性能的,要尽量去避免,在我们的程序中发生这样的行为。

 

转载于:https://www.cnblogs.com/lisong-home/p/7668434.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值