黑马程序员技术交流社区

标题: java中继承问题 [打印本页]

作者: liuyangyang    时间: 2013-4-8 17:48
标题: java中继承问题
public class Fu {


public static void main(String[] args)
{
  Zi zi=new Zi();
  for(int i=0;i<100;i++)
  {
   if(i%2==0){
    zi.method1();
   }else{
    zi.method1();//在这里能让method1方法调用父类中的method2而不是子类中的method方法吗?注: 不new 父类对象的情况下。
   }
  }
}


public  void  method1()
{
  method2();
}

public void method2()
{
  System.out.println("fu  method2");
}
}



class Zi extends Fu
{
//重写父类中的method2
public void method2()
{
  System.out.println("zi method2");
}

}

作者: 郭彦君    时间: 2013-4-8 18:27
没搞懂你这样写的目的,你在父类中为什么创建子类的引用,为什么不直接在子类调用这些方法啊,子类继承了父类就是为了使用父类的方法。
不过你既然这样写了,其实是和直接在子类中调用一样的,因为你在子类中复写了父类的方法,子类在调用时先从自己的类中找该方法,如果有的话是不会去父类找的。
想用父类的方法,那只能不在子类复写method2方法
作者: 王梦南    时间: 2013-4-8 18:32
对于楼主的请求,很。。。
总之显示下一下楼主需要的功能。楼主的继承应该好好学学,让我看了有些晕。
  1. public class Fu {
  2.         
  3.         public  void  method1(){
  4.                   method2();
  5.                 }

  6.                 public void method2(){
  7.                   System.out.println("fu  method2");
  8.                 }
  9.                
  10.         
  11.                 public static void main(String[] args){
  12.                   Zi zi=new Zi();
  13.                   for(int i=0;i<100;i++){
  14.                    if(i%2==0){
  15.                     zi.method2();
  16.                    }else{
  17.                         zi.method1();//
  18.                    }
  19.                  }


  20. }

  21. }



  22. class Zi extends Fu{
  23. //重写父类中的method1
  24.         public void method1(){
  25.                   super.method2();
  26.                 }
  27. //重写父类中的method2
  28. public void method2(){
  29.   System.out.println("zi method2");
  30. }
  31. }
复制代码

作者: 王梦南    时间: 2013-4-8 18:58
楼主是刚刚接触java吧,我认为楼主应该把测试类分开写,不要写到父类中。这样比较好理解。看着结构也更清晰。
  1. public class Fu {
  2.         public void method1(){
  3.                 System.out.println(" fu method1");
  4.         }
  5.         public void method2(){
  6.                 System.out.println(" fu method2");
  7.         }
  8. }

  9. public class Zi  extends Fu{
  10.         @Override
  11.         public void method1() {
  12.                 System.out.println("zi method1");//想调用父类的method1不要重写method1就好了
  13.         }
  14.         @Override
  15.         public void method2() {
  16.                 System.out.println("zi method2");//想调用父类的method2不要重写method2就好了。
  17.                 //1个已经写死的方法不能在外面判断条件改变调用内部的内容,但是给方法传入相应的参数可以在方法内部进行选择输出。
  18.         }
  19. }

  20. public class Test {
  21.         public static void main(String[] args) {
  22.                 Zi zi = new Zi();
  23.                 for (int i = 0; i < 100; i++) {
  24.                         if (i % 2 == 0) {
  25.                                 zi.method2();
  26.                         } else {
  27.                                 zi.method1();
  28.                         }
  29.                 }
  30.         }

  31. }

复制代码

作者: liuyangyang    时间: 2013-4-8 19:22
王梦南 发表于 2013-4-8 18:58
楼主是刚刚接触java吧,我认为楼主应该把测试类分开写,不要写到父类中。这样比较好理解。看着结构也更清晰 ...

呵呵, 明白啦。谢谢你。
作者: 王梦南    时间: 2013-4-8 19:36
liuyangyang 发表于 2013-4-8 19:22
呵呵, 明白啦。谢谢你。

不用客气,刚学的时候都是这样的,慢慢就会明白了,加油啊
作者: liuyangyang    时间: 2013-4-8 20:01
王梦南 发表于 2013-4-8 19:36
不用客气,刚学的时候都是这样的,慢慢就会明白了,加油啊

恩,好的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2