java书里的代码 我对比了十多遍也看不出来错误才来劳驾各位大哥。

bountifully 2017-10-15 04:03:36
一般自己对的出来,百度的出来的错误我都自己解决,这个看了十多遍硬是没看出来。眼睛都要瞎了。
先贴上错误的

package chucuode1;

interface drawTest{
public void draw();
}

class ParallelogramgleUseInterface extends QuadrangleUseInterface

implements drawTest{
public void draw() {
System.out.println("平行四边形.draw()");
}

void doAnyThing(){

}
}
class SquareUseInterface extends QuadrangleUseInterface implements
drawTest{
public void draw(){

System.out.println("正方形.draw()");
}
void doAnyThing() {

}
}
class AnyThingUseInterface extends QuadrangleUseInterface{
void doAnyThing() {
}
}
public class QuadrangleUseInterface{

public void doAnyThing() {

}
public static void main(String args) {
drawTestd= {
new SquareUseInterface(), new ParallelogramgleUseInterface()};

for(int i=0;i<d.length;i++) {
d.draw();
}

}
}



再贴上正确的

package crmdjtdedaan;

interface drawTest { // 定义接口
public void draw(); // 定义方法
}

// 定义平行四边形类,该类继承了四边形类,并实现了drawTest接口
class ParallelogramgleUseInterface extends QuadrangleUseInterface
implements drawTest {
public void draw() { // 由于该类实现了接口,所以需要覆盖draw()方法
System.out.println("平行四边形.draw()");
}

void doAnyThing() { // 覆盖父类方法
// SomeSentence
}
}

class SquareUseInterface extends QuadrangleUseInterface implements
drawTest {
public void draw() {
System.out.println("正方形.draw()");
}

void doAnyThing() {
// SomeSentence
}
}

class AnyThingUseInterface extends QuadrangleUseInterface {
void doAnyThing() {

}
}

public class QuadrangleUseInterface { // 定义四边形类
public void doAnyTthing() {
// SomeSentence
}

public static void main(String args) {
drawTest d = { // 接口也可以进行向上转型操作
new SquareUseInterface(), new ParallelogramgleUseInterface() };
for (int i = 0; i < d.length; i++) {
d.draw(); // 调用draw()方法
}
}
}
...全文
877 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35048233 2017-10-21
  • 打赏
  • 举报
回复
你这代码写的.... void doanything 都报错
aa2575155322 2017-10-17
  • 打赏
  • 举报
回复
public static void main(String []args) { drawTest []d = { new SquareUseInterface(), new ParallelogramgleUseInterface() }; for (int i = 0; i < d.length; i++) { d[i].draw(); // 调用draw()方法 } }
u010222066 2017-10-16
  • 打赏
  • 举报
回复
在Java里,接口里声明的方法默认都是public的,也必须是public的。实现了该接口的类的方法必须都要用public来修饰该方法
「已注销」 2017-10-16
  • 打赏
  • 举报
回复
逗比123号 2017-10-16
  • 打赏
  • 举报
回复
引用 13 楼 weixin_40471457 的回复:
[quote=引用 12 楼 pany1209 的回复:] [quote=引用 11 楼 weixin_40471457 的回复:] [quote=引用 9 楼 pany1209 的回复:] [quote=引用 8 楼 weixin_40471457 的回复:] [quote=引用 5 楼 tiandixuanwuliang 的回复:] 这里应该是数组吧 public static void main(String args) { drawTest[] d= { new SquareUseInterface(), new ParallelogramgleUseInterface()}; for(int i=0;i<d.length;i++) { d[i].draw(); } }
楼上的几位 那个可能drawTest[]d= 我之前复制代码到网站出问题,实际我没有错的 我//报错 就是三个do AnyThing 红色标注Cannot reduce the visibility of the inherited method from QuadrangleUseInterface
package chucuode1;
 
interface drawTest{
    public void draw();
}
 
class ParallelogramgleUseInterface extends QuadrangleUseInterface
     implements drawTest{
    public void draw() {
        System.out.println("平行四边形.draw()");
    }
     
    void doAnyThing(){
         
    }
}
class SquareUseInterface extends QuadrangleUseInterface implements 
   drawTest{
    public void draw(){
         
        System.out.println("正方形.draw()");
    }
    void doAnyThing() {
         
}
}
class AnyThingUseInterface extends QuadrangleUseInterface{
    void doAnyThing() {
        }
    }
public class QuadrangleUseInterface{
     
    public void doAnyThing() {
         
    }
    public static void main(String[] args) {
        drawTest[]d= {
        new SquareUseInterface(), new ParallelogramgleUseInterface()};
         
        for(int i=0;i<d.length;i++) {
            d[i].draw();
        }
         
    }
}
[/quote] 报错的方法前面都要加上public.......[/quote] 下面是正确运行的,也没有你说的加public吧?
package crmdjtdedaan;

interface drawTest { // 定义接口
	public void draw(); // 定义方法
}

// 定义平行四边形类,该类继承了四边形类,并实现了drawTest接口
class ParallelogramgleUseInterface extends QuadrangleUseInterface
		implements drawTest {
	public void draw() { // 由于该类实现了接口,所以需要覆盖draw()方法
		System.out.println("平行四边形.draw()");
	}
	
	void doAnyThing() { // 覆盖父类方法
		// SomeSentence
	}
}

class SquareUseInterface extends QuadrangleUseInterface implements
		drawTest {
	public void draw() {
		System.out.println("正方形.draw()");
	}
	
	void doAnyThing() {
		// SomeSentence
	}
}

class AnyThingUseInterface extends QuadrangleUseInterface {
	void doAnyThing() {
		
	}
}

public class QuadrangleUseInterface { // 定义四边形类
	public void doAnyTthing() {
		// SomeSentence
	}
	
	public static void main(String[] args) {
		drawTest[] d = { // 接口也可以进行向上转型操作
		new SquareUseInterface(), new ParallelogramgleUseInterface() };
		for (int i = 0; i < d.length; i++) {
			d[i].draw(); // 调用draw()方法
		}
	}
}
[/quote] doAnyTthing()和上面的都不一样了。。。。笑尿 先去看看重写是什么意思吧????[/quote] 谢谢兄台回复,那依你看应该看来是原作者打字错误了?这种应该是要么一起public 要么同一默认。看来我看的这本书java从入门到精通 实在太烂了[/quote] 重写的时候,子类的可见性不能低于父类,例如父类是默认,那么子类就要是默认或者protected或者public,父类是public,那么子类就必须是public
仓井NULL 2017-10-16
  • 打赏
  • 举报
回复
很多书源码可能是有问题的 一层层debug啊,也是联系排错的好方法
天地炫舞 2017-10-15
  • 打赏
  • 举报
回复
这里应该是数组吧 public static void main(String args) { drawTest[] d= { new SquareUseInterface(), new ParallelogramgleUseInterface()}; for(int i=0;i<d.length;i++) { d[i].draw(); } }
bountifully 2017-10-15
  • 打赏
  • 举报
回复
引用 12 楼 pany1209 的回复:
[quote=引用 11 楼 weixin_40471457 的回复:] [quote=引用 9 楼 pany1209 的回复:] [quote=引用 8 楼 weixin_40471457 的回复:] [quote=引用 5 楼 tiandixuanwuliang 的回复:] 这里应该是数组吧 public static void main(String args) { drawTest[] d= { new SquareUseInterface(), new ParallelogramgleUseInterface()}; for(int i=0;i<d.length;i++) { d[i].draw(); } }
楼上的几位 那个可能drawTest[]d= 我之前复制代码到网站出问题,实际我没有错的 我//报错 就是三个do AnyThing 红色标注Cannot reduce the visibility of the inherited method from QuadrangleUseInterface
package chucuode1;
 
interface drawTest{
    public void draw();
}
 
class ParallelogramgleUseInterface extends QuadrangleUseInterface
     implements drawTest{
    public void draw() {
        System.out.println("平行四边形.draw()");
    }
     
    void doAnyThing(){
         
    }
}
class SquareUseInterface extends QuadrangleUseInterface implements 
   drawTest{
    public void draw(){
         
        System.out.println("正方形.draw()");
    }
    void doAnyThing() {
         
}
}
class AnyThingUseInterface extends QuadrangleUseInterface{
    void doAnyThing() {
        }
    }
public class QuadrangleUseInterface{
     
    public void doAnyThing() {
         
    }
    public static void main(String[] args) {
        drawTest[]d= {
        new SquareUseInterface(), new ParallelogramgleUseInterface()};
         
        for(int i=0;i<d.length;i++) {
            d[i].draw();
        }
         
    }
}
[/quote] 报错的方法前面都要加上public.......[/quote] 下面是正确运行的,也没有你说的加public吧?
package crmdjtdedaan;

interface drawTest { // 定义接口
	public void draw(); // 定义方法
}

// 定义平行四边形类,该类继承了四边形类,并实现了drawTest接口
class ParallelogramgleUseInterface extends QuadrangleUseInterface
		implements drawTest {
	public void draw() { // 由于该类实现了接口,所以需要覆盖draw()方法
		System.out.println("平行四边形.draw()");
	}
	
	void doAnyThing() { // 覆盖父类方法
		// SomeSentence
	}
}

class SquareUseInterface extends QuadrangleUseInterface implements
		drawTest {
	public void draw() {
		System.out.println("正方形.draw()");
	}
	
	void doAnyThing() {
		// SomeSentence
	}
}

class AnyThingUseInterface extends QuadrangleUseInterface {
	void doAnyThing() {
		
	}
}

public class QuadrangleUseInterface { // 定义四边形类
	public void doAnyTthing() {
		// SomeSentence
	}
	
	public static void main(String[] args) {
		drawTest[] d = { // 接口也可以进行向上转型操作
		new SquareUseInterface(), new ParallelogramgleUseInterface() };
		for (int i = 0; i < d.length; i++) {
			d[i].draw(); // 调用draw()方法
		}
	}
}
[/quote] doAnyTthing()和上面的都不一样了。。。。笑尿 先去看看重写是什么意思吧????[/quote] 谢谢兄台回复,那依你看应该看来是原作者打字错误了?这种应该是要么一起public 要么同一默认。看来我看的这本书java从入门到精通 实在太烂了
w_sabre 2017-10-15
  • 打赏
  • 举报
回复
报的什么错? 是因为d前面少个空格吗?
偏安zzcoder 2017-10-15
  • 打赏
  • 举报
回复

drawTestd= {
        new SquareUseInterface(), new ParallelogramgleUseInterface()};
         
        for(int i=0;i<d.length;i++) {
            d.draw();
        }
drawTest d=.....
eternaluve 2017-10-15
  • 打赏
  • 举报
回复
@kingslave1 你是来自未来的么,给我两个下载分
eternaluve 2017-10-15
  • 打赏
  • 举报
回复
楼上那位,你是不是穿越了,为什么时间是9点啊,现在明明八点
李德胜1995 2017-10-15
  • 打赏
  • 举报
回复
引用 11 楼 weixin_40471457 的回复:
[quote=引用 9 楼 pany1209 的回复:] [quote=引用 8 楼 weixin_40471457 的回复:] [quote=引用 5 楼 tiandixuanwuliang 的回复:] 这里应该是数组吧 public static void main(String args) { drawTest[] d= { new SquareUseInterface(), new ParallelogramgleUseInterface()}; for(int i=0;i<d.length;i++) { d[i].draw(); } }
楼上的几位 那个可能drawTest[]d= 我之前复制代码到网站出问题,实际我没有错的 我//报错 就是三个do AnyThing 红色标注Cannot reduce the visibility of the inherited method from QuadrangleUseInterface
package chucuode1;
 
interface drawTest{
    public void draw();
}
 
class ParallelogramgleUseInterface extends QuadrangleUseInterface
     implements drawTest{
    public void draw() {
        System.out.println("平行四边形.draw()");
    }
     
    void doAnyThing(){
         
    }
}
class SquareUseInterface extends QuadrangleUseInterface implements 
   drawTest{
    public void draw(){
         
        System.out.println("正方形.draw()");
    }
    void doAnyThing() {
         
}
}
class AnyThingUseInterface extends QuadrangleUseInterface{
    void doAnyThing() {
        }
    }
public class QuadrangleUseInterface{
     
    public void doAnyThing() {
         
    }
    public static void main(String[] args) {
        drawTest[]d= {
        new SquareUseInterface(), new ParallelogramgleUseInterface()};
         
        for(int i=0;i<d.length;i++) {
            d[i].draw();
        }
         
    }
}
[/quote] 报错的方法前面都要加上public.......[/quote] 下面是正确运行的,也没有你说的加public吧?
package crmdjtdedaan;

interface drawTest { // 定义接口
	public void draw(); // 定义方法
}

// 定义平行四边形类,该类继承了四边形类,并实现了drawTest接口
class ParallelogramgleUseInterface extends QuadrangleUseInterface
		implements drawTest {
	public void draw() { // 由于该类实现了接口,所以需要覆盖draw()方法
		System.out.println("平行四边形.draw()");
	}
	
	void doAnyThing() { // 覆盖父类方法
		// SomeSentence
	}
}

class SquareUseInterface extends QuadrangleUseInterface implements
		drawTest {
	public void draw() {
		System.out.println("正方形.draw()");
	}
	
	void doAnyThing() {
		// SomeSentence
	}
}

class AnyThingUseInterface extends QuadrangleUseInterface {
	void doAnyThing() {
		
	}
}

public class QuadrangleUseInterface { // 定义四边形类
	public void doAnyTthing() {
		// SomeSentence
	}
	
	public static void main(String[] args) {
		drawTest[] d = { // 接口也可以进行向上转型操作
		new SquareUseInterface(), new ParallelogramgleUseInterface() };
		for (int i = 0; i < d.length; i++) {
			d[i].draw(); // 调用draw()方法
		}
	}
}
[/quote] doAnyTthing()和上面的都不一样了。。。。笑尿 先去看看重写是什么意思吧????
bountifully 2017-10-15
  • 打赏
  • 举报
回复
引用 5 楼 tiandixuanwuliang 的回复:
这里应该是数组吧
public static void main(String args) {
drawTest[] d= {
new SquareUseInterface(), new ParallelogramgleUseInterface()};

for(int i=0;i<d.length;i++) {
d[i].draw();
}
}


楼上的几位 那个可能drawTest[]d= 我之前复制代码到网站出问题,实际我没有错的 我//报错 就是三个do AnyThing 红色标注Cannot reduce the visibility of the inherited method from QuadrangleUseInterface


package chucuode1;

interface drawTest{
public void draw();
}

class ParallelogramgleUseInterface extends QuadrangleUseInterface
implements drawTest{
public void draw() {
System.out.println("平行四边形.draw()");
}

void doAnyThing(){

}
}
class SquareUseInterface extends QuadrangleUseInterface implements
drawTest{
public void draw(){

System.out.println("正方形.draw()");
}
void doAnyThing() {

}
}
class AnyThingUseInterface extends QuadrangleUseInterface{
void doAnyThing() {
}
}
public class QuadrangleUseInterface{

public void doAnyThing() {

}
public static void main(String[] args) {
drawTest[]d= {
new SquareUseInterface(), new ParallelogramgleUseInterface()};

for(int i=0;i<d.length;i++) {
d[i].draw();
}

}
}
bountifully 2017-10-15
  • 打赏
  • 举报
回复
引用 1 楼 kingslave1 的回复:

drawTestd= {
        new SquareUseInterface(), new ParallelogramgleUseInterface()};
         
        for(int i=0;i<d.length;i++) {
            d.draw();
        }
drawTest d=.....
谢谢你的认真回复,那个可能drawTest[]d= 我之前复制代码到网站出问题,实际我没有错的 我//报错 就是三个do AnyThing 红色标注Cannot reduce the visibility of the inherited method from QuadrangleUseInterface
bountifully 2017-10-15
  • 打赏
  • 举报
回复
楼上的几位 那个可能drawTest[]d= 我之前复制代码到网站出问题,实际我没有错的 我//报错 就是三个do AnyThing 红色标注Cannot reduce the visibility of the inherited method from QuadrangleUseInterface

package chucuode1;

interface drawTest{
public void draw();
}

class ParallelogramgleUseInterface extends QuadrangleUseInterface
implements drawTest{
public void draw() {
System.out.println("平行四边形.draw()");
}

void doAnyThing(){

}
}
class SquareUseInterface extends QuadrangleUseInterface implements
drawTest{
public void draw(){

System.out.println("正方形.draw()");
}
void doAnyThing() {

}
}
class AnyThingUseInterface extends QuadrangleUseInterface{
void doAnyThing() {
}
}
public class QuadrangleUseInterface{

public void doAnyThing() {

}
public static void main(String[] args) {
drawTest[]d= {
new SquareUseInterface(), new ParallelogramgleUseInterface()};

for(int i=0;i<d.length;i++) {
d[i].draw();
}

}
}
bountifully 2017-10-15
  • 打赏
  • 举报
回复
引用 9 楼 pany1209 的回复:
[quote=引用 8 楼 weixin_40471457 的回复:] [quote=引用 5 楼 tiandixuanwuliang 的回复:] 这里应该是数组吧 public static void main(String args) { drawTest[] d= { new SquareUseInterface(), new ParallelogramgleUseInterface()}; for(int i=0;i<d.length;i++) { d[i].draw(); } }
楼上的几位 那个可能drawTest[]d= 我之前复制代码到网站出问题,实际我没有错的 我//报错 就是三个do AnyThing 红色标注Cannot reduce the visibility of the inherited method from QuadrangleUseInterface
package chucuode1;
 
interface drawTest{
    public void draw();
}
 
class ParallelogramgleUseInterface extends QuadrangleUseInterface
     implements drawTest{
    public void draw() {
        System.out.println("平行四边形.draw()");
    }
     
    void doAnyThing(){
         
    }
}
class SquareUseInterface extends QuadrangleUseInterface implements 
   drawTest{
    public void draw(){
         
        System.out.println("正方形.draw()");
    }
    void doAnyThing() {
         
}
}
class AnyThingUseInterface extends QuadrangleUseInterface{
    void doAnyThing() {
        }
    }
public class QuadrangleUseInterface{
     
    public void doAnyThing() {
         
    }
    public static void main(String[] args) {
        drawTest[]d= {
        new SquareUseInterface(), new ParallelogramgleUseInterface()};
         
        for(int i=0;i<d.length;i++) {
            d[i].draw();
        }
         
    }
}
[/quote] 报错的方法前面都要加上public.......[/quote] 下面是正确运行的,也没有你说的加public吧?
package crmdjtdedaan;

interface drawTest { // 定义接口
	public void draw(); // 定义方法
}

// 定义平行四边形类,该类继承了四边形类,并实现了drawTest接口
class ParallelogramgleUseInterface extends QuadrangleUseInterface
		implements drawTest {
	public void draw() { // 由于该类实现了接口,所以需要覆盖draw()方法
		System.out.println("平行四边形.draw()");
	}
	
	void doAnyThing() { // 覆盖父类方法
		// SomeSentence
	}
}

class SquareUseInterface extends QuadrangleUseInterface implements
		drawTest {
	public void draw() {
		System.out.println("正方形.draw()");
	}
	
	void doAnyThing() {
		// SomeSentence
	}
}

class AnyThingUseInterface extends QuadrangleUseInterface {
	void doAnyThing() {
		
	}
}

public class QuadrangleUseInterface { // 定义四边形类
	public void doAnyTthing() {
		// SomeSentence
	}
	
	public static void main(String[] args) {
		drawTest[] d = { // 接口也可以进行向上转型操作
		new SquareUseInterface(), new ParallelogramgleUseInterface() };
		for (int i = 0; i < d.length; i++) {
			d[i].draw(); // 调用draw()方法
		}
	}
}
bountifully 2017-10-15
  • 打赏
  • 举报
回复
这个是正确的代码 没报错,也没加public啊?
package crmdjtdedaan;

interface drawTest { // 定义接口
	public void draw(); // 定义方法
}

// 定义平行四边形类,该类继承了四边形类,并实现了drawTest接口
class ParallelogramgleUseInterface extends QuadrangleUseInterface
		implements drawTest {
	public void draw() { // 由于该类实现了接口,所以需要覆盖draw()方法
		System.out.println("平行四边形.draw()");
	}
	
	void doAnyThing() { // 覆盖父类方法
		// SomeSentence
	}
}

class SquareUseInterface extends QuadrangleUseInterface implements
		drawTest {
	public void draw() {
		System.out.println("正方形.draw()");
	}
	
	void doAnyThing() {
		// SomeSentence
	}
}

class AnyThingUseInterface extends QuadrangleUseInterface {
	void doAnyThing() {
		
	}
}

public class QuadrangleUseInterface { // 定义四边形类
	public void doAnyTthing() {
		// SomeSentence
	}
	
	public static void main(String[] args) {
		drawTest[] d = { // 接口也可以进行向上转型操作
		new SquareUseInterface(), new ParallelogramgleUseInterface() };
		for (int i = 0; i < d.length; i++) {
			d[i].draw(); // 调用draw()方法
		}
	}
}
李德胜1995 2017-10-15
  • 打赏
  • 举报
回复
引用 8 楼 weixin_40471457 的回复:
[quote=引用 5 楼 tiandixuanwuliang 的回复:] 这里应该是数组吧 public static void main(String args) { drawTest[] d= { new SquareUseInterface(), new ParallelogramgleUseInterface()}; for(int i=0;i<d.length;i++) { d[i].draw(); } }
楼上的几位 那个可能drawTest[]d= 我之前复制代码到网站出问题,实际我没有错的 我//报错 就是三个do AnyThing 红色标注Cannot reduce the visibility of the inherited method from QuadrangleUseInterface
package chucuode1;
 
interface drawTest{
    public void draw();
}
 
class ParallelogramgleUseInterface extends QuadrangleUseInterface
     implements drawTest{
    public void draw() {
        System.out.println("平行四边形.draw()");
    }
     
    void doAnyThing(){
         
    }
}
class SquareUseInterface extends QuadrangleUseInterface implements 
   drawTest{
    public void draw(){
         
        System.out.println("正方形.draw()");
    }
    void doAnyThing() {
         
}
}
class AnyThingUseInterface extends QuadrangleUseInterface{
    void doAnyThing() {
        }
    }
public class QuadrangleUseInterface{
     
    public void doAnyThing() {
         
    }
    public static void main(String[] args) {
        drawTest[]d= {
        new SquareUseInterface(), new ParallelogramgleUseInterface()};
         
        for(int i=0;i<d.length;i++) {
            d[i].draw();
        }
         
    }
}
[/quote] 报错的方法前面都要加上public.......

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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