关于java的接口与类的继承问题

qq_34969230 2016-05-19 08:27:34
由于还在自学,书上没有出现完整的实例,所以我自己编写了一个通过继承接口与类准备实现数学运算的常规的加减乘除法,但是在继承接口时出现了错误,无法正确的实现继承,该如何改善

//定义草稿数学的有关double运算的接口
interface caogaoMathDouble {
public static double add(double a, double b) {
return a + b;
}

public static double add(double a, int b) {
return a + b;
}

public static double add(int a, double b) {
return a + b;
}

public static double remove(double a, double b) {
return a - b;
}

public static double remove(int a, double b) {
return a - b;
}

public static double remove(double a, int b) {
return a - b;
}

public static double abs(double a,double b) {
return Math.abs((a+b)/2);
}
}

// 定义草稿数学的有关乘法运算的接口
interface caogaoMathMult {
public static int mult(int a, int b) {
return a * b;
}

public static double mult(double a, int b) {
return a * b;
}

public static double mult(int a, double b) {
return a * b;
}

public static double mult(double a, double b) {
return a * b;
}
}

//定义草稿数学的有关除法运算的接口
interface caogaoMathDiv {
public static int div(int a, int b) {
return a / b;
}

public static double div(double a, int b) {
return a / b;
}

public static double div(int a, double b) {
return a / b;
}

public static double div(double a, double b) {
return a / b;
}
}

// 定义草稿数学总和接口,继承草稿数学的有关乘法运算、除法运算、以及double加减法运算的接口
interface caogaoMathZonghe extends caogaoMathDiv, caogaoMathDouble, caogaoMathMult {

}

// 定义草稿数学的抽象类,只包含int加减法运算
public abstract class caogaoMath{
private int a;
private int b;

public caogaoMath(int a, int b) {
// TODO 自动生成的构造函数存根
this.a = a;
this.b = b;
}

public int add() {
return a + b;
}

public int remove() {
return a - b;
}

public int abs() {
return Math.abs((a+b)/2);
}

}
//定义草稿类,继承抽象类草稿数学并实现草稿数学的总和接口
class caogao extends caogaoMath implements caogaoMathDiv {

public caogao(int a, int b) {
super(a, b);
// TODO 自动生成的构造函数存根
}

public static void main(String[] args) {
caogao caogao=new caogao(2, 5);
System.out.println(caogao.abs());
System.out.println(caogao.remove());
System.out.println(caogao.add());
//在草稿类中正确继承了草稿数学中的类,但是没有正确实现草稿数学总和接口中的各个方法
}
}
/*
//定义草稿类,继承抽象类草稿数学并实现草稿数学的有关除法运算的接口
class caogao extends caogaoMath implements caogaoMathDiv {

public caogao(int a, int b) {
super(a, b);
// TODO 自动生成的构造函数存根
}

public static void main(String[] args) {
caogao caogao=new caogao(2, 5);
System.out.println(caogao.abs());
System.out.println(caogao.remove());
System.out.println(caogao.add());
//在草稿类中正确继承了草稿数学中的类,但是没有正确实现草稿数学的有关除法运算接口中的方法
//也就是说并不是在第71行时接口继承接口时错误的问题
}
}
*/
...全文
214 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34969230 2016-05-20
  • 打赏
  • 举报
回复
引用 2 楼 Q80470101 的回复:
接口是不需要也不能写具体实现的。 interface caogaoMathDouble { public static double add(double a, double b) { return a + b; } 这些写法有问题。
//定义草稿数学的有关double乘除法运算的接口
interface caogaoMathDouble {
	public double div();

	public double mult();
}

// 定义草稿数学的抽象类,只包含double加减法与abs运算
abstract class caogaoMath {
	private double a;
	private double b;

	public caogaoMath(double a, double b) {
		// TODO 自动生成的构造函数存根
		this.a = a;
		this.b = b;
	}

	public double add() {
		return a + b;
	}

	public double remove() {
		return a - b;
	}

	public double abs() {
		return Math.abs((a + b) / 2);
	}

}

// 定义草稿类,继承抽象类草稿数学并实现草稿数学的总和接口
class Caogao extends caogaoMath implements caogaoMathDouble {
	double a;
	double b;
	public Caogao(double a, double b) {
		// TODO 自动生成的构造函数存根
		super(a,b);
		this.a=a;
		this.b=b;
	}

	public static void main(String[] args) {
		Caogao caogao = new Caogao(2, 5);
		System.out.println(caogao.abs());
		System.out.println(caogao.remove());
		System.out.println(caogao.add());
		System.out.println(caogao.div());
		System.out.println(caogao.mult());
	}

	@Override
	public double div() {
		// TODO 自动生成的方法存根
		return a/b;
	}

	@Override
	public double mult() {
		// TODO 自动生成的方法存根
		return a*b;
	}


}
我适当的修改了代码,可行了。只不过在每次接口继承时都需要在接口中定义方法,然后又在继承的类中去实现方法?
qq_34969230 2016-05-20
  • 打赏
  • 举报
回复
引用 2 楼 Q80470101 的回复:
接口是不需要也不能写具体实现的。 interface caogaoMathDouble { public static double add(double a, double b) { return a + b; } 这些写法有问题。
那我该怎么做
  • 打赏
  • 举报
回复
楼上说的对。
家里敷泥呀 2016-05-20
  • 打赏
  • 举报
回复
接口是不需要也不能写具体实现的。 interface caogaoMathDouble { public static double add(double a, double b) { return a + b; } 这些写法有问题。
家里敷泥呀 2016-05-20
  • 打赏
  • 举报
回复
引用 5 楼 qq_34969230 的回复:
[quote=引用 2 楼 Q80470101 的回复:] 接口是不需要也不能写具体实现的。 interface caogaoMathDouble { public static double add(double a, double b) { return a + b; } 这些写法有问题。
//定义草稿数学的有关double乘除法运算的接口
interface caogaoMathDouble {
	public double div();

	public double mult();
}

// 定义草稿数学的抽象类,只包含double加减法与abs运算
abstract class caogaoMath {
	private double a;
	private double b;

	public caogaoMath(double a, double b) {
		// TODO 自动生成的构造函数存根
		this.a = a;
		this.b = b;
	}

	public double add() {
		return a + b;
	}

	public double remove() {
		return a - b;
	}

	public double abs() {
		return Math.abs((a + b) / 2);
	}

}

// 定义草稿类,继承抽象类草稿数学并实现草稿数学的总和接口
class Caogao extends caogaoMath implements caogaoMathDouble {
	double a;
	double b;
	public Caogao(double a, double b) {
		// TODO 自动生成的构造函数存根
		super(a,b);
		this.a=a;
		this.b=b;
	}

	public static void main(String[] args) {
		Caogao caogao = new Caogao(2, 5);
		System.out.println(caogao.abs());
		System.out.println(caogao.remove());
		System.out.println(caogao.add());
		System.out.println(caogao.div());
		System.out.println(caogao.mult());
	}

	@Override
	public double div() {
		// TODO 自动生成的方法存根
		return a/b;
	}

	@Override
	public double mult() {
		// TODO 自动生成的方法存根
		return a*b;
	}


}
我适当的修改了代码,可行了。只不过在每次接口继承时都需要在接口中定义方法,然后又在继承的类中去实现方法?[/quote] 是的,接口的确有这个麻烦的地方。
qq_29508533 2016-05-19
  • 打赏
  • 举报
回复
继承只能单继承

51,407

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧