package per.sww.datetwo; public abstract class Annneal { public abstract void run();//共有的行为_____跑 public abstract void jump();//共有的行为_____跳 public abstract void eat();//共有的行为_____吃 public abstract void sleep();//共有的行为_____睡 public abstract void call();//共有的行为_____叫 public String Roll(String acting) { return acting; } }
1 package per.sww.datetwo; 2 3 public class Dog extends Annneal implements ICoquetry{ 4 5 @Override 6 public String Roll(String acting) { 7 System.out.println("我是狗,我要吃狗粮"); 8 return acting; 9 } 10 11 @Override 12 public void run() { 13 System.out.println("我会跑"); 14 } 15 16 @Override 17 public void jump() { 18 System.out.println("我会跳"); 19 } 20 21 @Override 22 public void eat() { 23 System.out.println("我会吃"); 24 } 25 26 @Override 27 public void sleep() { 28 System.out.println("我会睡"); 29 } 30 31 @Override 32 public void call() { 33 System.out.println("我会叫"); 34 } 35 36 }
package per.sww.datetwo; public class Cat extends Annneal implements ICoquetry{ @Override public void run() { System.out.println("我会跑"); } @Override public void jump() { System.out.println("我会跳"); } @Override public void eat() { System.out.println("我会吃"); } @Override public void sleep() { System.out.println("我会睡"); } @Override public void call() { System.out.println("我会叫"); } @Override public String Roll(String acting) { System.out.println("我是猫,我要吃大鱼"); return acting; } }
package per.sww.datetwo; public interface ICoquetry{ String Roll(String acting);//打滚 }
package per.sww.datetwo; public class Test { public static void main(String[] args) { Cat cat=new Cat(); cat.run(); cat.jump(); cat.eat(); cat.sleep(); cat.call(); cat.Roll(acting); System.out.println("---------------------------"); Dog dog=new Dog(); dog.run(); dog.jump(); dog.eat(); dog.sleep(); dog.call(); dog.Roll(acting); } }
报什么错?
cat.Roll(acting);接个报错acting cannot be resolved to a variable
@眉间剪水泛千愁: 这是java代码吗?你为什么要传acting?好像没用到啊,去掉试试看
@子明: 因为我要学着用接口呀,去掉当然 是可以的啦,现在加上接口就报错了
@眉间剪水泛千愁: 不是接口报错,是传这个字符串报错。
@子明: (⊙o⊙)…那怎么做
@眉间剪水泛千愁: System.out.println(cat.Roll(acting));因为你没有接return返回的字符串下面说你传个字符串过去,但是传去了你又没有接
@子明: 按你说的写了,这行报错
@眉间剪水泛千愁: 报什么错呢?System.out.println(cat.Roll(acting));改为acting=cat.Roll(acting);记得在前面加上string acting="菜鸟";
@子明: 代码和报错都截下来
@子明: 截了,不过需要有博客才能上传
@眉间剪水泛千愁: 。。。那你直接贴上来好了。如果前面说的能够解决就最好咯,如果不能你就贴上来
@子明:
package per.sww.datetwo; public class Test { public static void main(String[] args) { // Annneal cat=(Cat) new Cat(); // cat.call(); Cat cat=new Cat(); cat.run(); cat.jump(); cat.eat(); cat.sleep(); cat.call(); System.out.println(cat.Roll(acting));//括号里的acting报错 System.out.println("---------------------------"); Dog dog=new Dog(); dog.run(); dog.jump(); dog.eat(); dog.sleep(); dog.call(); } }
@眉间剪水泛千愁: 报错呐
@眉间剪水泛千愁: 还是那个地方
@眉间剪水泛千愁: 因为acting没有赋值也没有声明。这java报错真难看懂。还说撒无法代理。你在使用acting的上面加上String acting="菜鸟";
你是菜鸟吧,没有声明acting变量啊
在Cat上边加上这句代码
String acting = "菜鸟";
╭(╯^╰)╮,知道是菜鸟你还说出来
cat.Roll(acting);
这里还是报错呐
acting没有声明啊,
看的我也是醉了
没有考虑到acting为空(即没有初始化)的情况,在return之前给acting初始化,然后在赋值传入的参数,