日期:2014-05-20  浏览次数:20660 次

实现接口的抽象方法和调用编译时提示错误:缺少方法主体,或什么抽象
小弟在学习java中, 学到接口这章,想用接口的知识来做个:求n的倍数和幂数的测试。
在编译时提示:“ 缺少方法主体,或什么抽象”
子类实现接口的方法体中只含有for()循环体,提示错误难道是因为for()循环体不能做接口的方法体???

请各位高手帮帮忙啊!

一个接口包如下:
package b;

public interface bbb
{
  public void jia();
  
  public void cheng();
  
}


子类如下:(编译时提示 public void jia()和public void cheng(),缺少方法主体,或什么抽象)
import java.util.Scanner;
import b.bbb;

class Mainn implements bbb
{
  static int n;
  static int N;
  int i;
  public Mainn()
  {
  System.out.println("请输入目标整型数 n");  
  Scanner sc1 = new Scanner(System.in);
  n=sc1.nextInt();
  System.out.println("请输入求值目标边际 N:");  
  Scanner sc2 = new Scanner(System.in);
  N=sc2.nextInt();
  }
  public void jia();
  {
  System.out.println("n 的倍数有:");
  for(i=n;i<=N;i=i+n)
  {
  System.out.printf("%s"+" \n",i);
  }
  System.out.println();
  }
  
  public void cheng();
  {
  System.out.println("n 的幂数有:");
  for(i=n;i<=N;i=i*i)
  {
  System.out.printf("%s"+" \n",i);
  }
  }
  
  }


public class LX9_1
{
  public static void main(String[] args)
  {
  Mainn m = new Mainn();
  m.jia();
  m.cheng();
   
  }
}




后面改做不用接口的方法:(可以成功运行,但还是不懂为什么上面的方法不行啊,是哪里写错了??还是这样的做法是不行的??)
import java.util.Scanner;

public class Mainn 
{
  static Mainn m = new Mainn();  
  static int n;
  static int N;
// int i;
  public Mainn()
  {
  System.out.println("请输入目标整型数 n");  
  Scanner sc1 = new Scanner(System.in);
  n=sc1.nextInt();
  System.out.println("请输入求值目标边际 N:");  
  Scanner sc2 = new Scanner(System.in);
  N=sc2.nextInt();
  }
  public static void main(String[] args)
  {
 
// public void jia();
// {
  int i;
  System.out.println("n 的倍数有:");
  for(i=n;i<=N;i=i+n);
  {
  System.out.printf("%s"+" ",i);  
  }
  System.out.println();
// }
// public void cheng();
// {
  System.out.println("n 的幂数有:");
  for(i=n;i<=N;i=i*i)
  {
  System.out.printf("%s"+" ",i);
  }
  
// }
  }
}

//public class LX9_1
//{
// public static void main(String[] args)
// {
// Mainn m = new Mainn();
// m.jia();
// m.cheng();
//
//
// }
//}


------解决方案--------------------
接口你都没用上啊,不考虑其它设计模式一般格式如下

接口名 变量名 = new 实现类名

只有就可以用接口变量访问实现类中的方法了
------解决方案--------------------
实现接口的类在方法名后多写了个分号。
------解决方案--------------------
public void jia();
{
System.out.println("n 的倍数有:");
for(i=n;i<=N;i=i+n)
{
System.out.printf("%s"+" \n",i);
}
System.out.println();
}

public void cheng();