多态的概念:
指不同类可以根据对象的不同而采取不同的多种不同的方式多态的基本点:1.里氏替换:a:允许父类引用指向子类对象b:如果要访问子类字段必须要强制转换 //在继承中有明确讲道。2.方法重写(虚方法) virtual 与 override a 定义:子类可以继承父类的方法、不想原封不动的继承父类的方法、而重新做修改的一种方式。方法重写也叫方法覆盖。b 发生在父类与子类值间c 格式: public virtual void sayhello(){ //父类 virtual //虚方法console.write("程序员");}
public class pe: fulei{
public override void sayhello(){//重写体 //子类 在子类中重写
}
}注意:
fulei dx=new pe();dx.ff();在内存中运行情况:在编译的时候指向父类引用对象、而在运行的时候则指向子类的各个重写的方法。相当于没有实现动态之前首先要进行强制转换后才能访问到各个子类的字段,而在实现多太的重写方法之后,代表程序自动帮你生成了这些过程。f: 父类中需要重写的方法必须写virtual 否则是个普通方法
e: 采用多态的好处是扩充强
例: fulei []yinyong =new fulei[3]{ new SE(), new PE(),new kuaiji(); //不需要改动总体结构、而只需要添加对象即可};for (int n=0;n<=fulei.length;n++) { fulei[n].sayhello.}
2.抽象类概念:在父类定义。子类如何实现和父类无关、完全是逻辑组成的一个类。注意:抽象方法必须位于抽象类之中2.如果是抽象方法、类也必须写成抽象类public abstract class fulei{public abstract void sahelloy();
}4.与虚方法比较1.抽象类必须要强制重写、而虚方法有选择性的重写。2.两者都可以实现多态3.开闭原则:
能在原有的框架内不改动原有的大框架、而增加或者是其他操作功能4.多态实现的三个原则:
1.要有继承2.要有父类引用子类对象3.要有方法重写 发生在子类与父类之间 在父类与子类中具有同名的返回值类型一样 参数一样5.为什么在重写后会自动转到子类中,是因为动态绑定