* 方法覆盖(override)-概念 简单的说:方法覆盖就是子类有一个方法,和父类的某个方法的名称,返回类型,参数,那么我们就说子类的这个方法覆盖了父类的那个方法,比如上个案例的Cat类的cry发就覆盖了Animal类的cry方法。 * 方法覆盖(override)-注意事项 方法覆盖有很多条件,有些书说的比较细,总的讲有两点一定注意: ① 子类的方法返回类型,参数,方法名称,要和父类方法的返回类型,参数,方法名称完全一样,否则编译出错。 ② 子类方法不能缩小父类方法的访问权限。 * 多态-概念 有了前面的基础,我们再看多态就相对容易了,请大家看我在Demo3_12.java上改动一下代码,从而引出多态的概念。 所谓多态,就是一个引用在不同情况下的多种状态。 你也可以这样理解:多态是指通过向父类的指针,来调用在不同子类中实现的方法。 约瑟夫问题: /** * 作者:顺平 * 功能:丢手帕问题 */ package hanshi; public class Demo4 { public static void main(String[] args) { // TODO Auto-generated method stub Cyclink cyclink=new Cyclink(); cyclink.setLen(9); cyclink.createLink(); cyclink.setK(3); cyclink.setM(3); cyclink.show(); cyclink.play(); } } class Child { int number; Child nextChile=null; public Child(int number) { //给一个编号 this.number=number; } } //环形链表 class Cyclink { //先定义一个指向链表第一个小孩的引用 //指向第一小孩的引用,不能动 Child firstChild=null; Child temp=null;//共有几个小孩 int len=0; int k=0; int m=0; //设置链表大小 public void setLen(int len) { this.len=len; } //设置从第几个人数数 public void setK(int k) { this.k=k; } public void setM(int m) { this.m=m; } //开始Play |