验收设计模式的时候,超强师傅提出这样几个问题:
1.代码实现关联关系、继承
2.对接口、实现的理解
3.重载、重写的实现
当然,还跟我们讲了好多,先总结一下这几天想明白了的几个知识点。
继承关系:子类继承父类
(一)继承1.子类拥有父类非private的属性和功能。
2.子类具有自己的属性和功能。
3.子类可以以自己的方式实现父类的功能。(方法重写)
举例说明:
abstract class Father
{
protected string name;//定义变量
public Father(string name)//构造函数,用于初始化
{
this.name = name;
}
public abstract void teacher();//父类有teacher的方法
}
class Son : Father
{
public Son(string name):base(name)//子类继承父类
{
this.name = "dyh";
}
public override void teacher()//子类重写父类方法
{
Console.WriteLine("dyh");
}
public void study()//子类可以有自己的新方法
{
Console.WriteLine("fkg");
}
}
(二)实现(通过重载或重写的方法)
1、主要是针对接口而言的,实现接口。接口是对共同行为的抽象。
2、抽象类:是对同一类的抽象
举例:猫、狗、鱼同属于动物,因而动物可以作为抽象类;如果,鱼可以潜水、潜水艇也可以潜水,那么它们可以继承“可潜水”这个接口。
3.如果行为跨越不同类的对象可以使用接口,同一类对象,可以继续使用抽象类
interface IWater
{
}
定义接口,父类引用指向子类对象。所以经常听说,面向接口编程,听师傅讲了好久,自己还没有完全消化,写不出成文的文章。
需要注意的是:抽象类、接口都不可以被实例化。因而在定义时需要特别注意一下。
(三)重载、重写
重载:在同一个类里面,可以调用同一方法,但是具体的类型是不一样的;重写:子类继承父类,通过重写实现。override关键字
(参考上面代码)
小结:设计模式中面向对象的思想是个老生长谈的问题了,关于面向对象的三个特征:继承、封装和多态。也是需要在实践中不断深化认识。还有就是UML几种关系:关联、泛化、实现、依赖。只是概念的东西理解了还不够,需要亲自动手动脑敲个小例子。其实,大话设计这个项目早就结束了,当时只是理解了某些概念,眼高手低,照葫芦画瓢,只是照着课本把例子敲了一遍,而没有学会举一反三,没有真正的把自己的理解体现在代码中。关于“父类引用指向子类对象”还需要再消化消化,多和同学交流交流,之后将完善这篇博客。