java不能覆盖方法,正在尝试指定更低的访问权限

yysx 2014-09-28 11:01:00
哪位大神抽空看一眼,找了半天也没发现错误啊,悲剧……
抽象类
public abstract class PizzaStore{
public Pizza orderPizza(String type){
Pizza pizza;

pizza=createPizza(type);

pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();

return pizza;
}
protected abstract Pizza createPizza(String type);
}

子类
public class NYPizzaStore extends PizzaStore{
Pizza createPizza(String item){
if(item.equals("cheese")){
return new NYStyleCheesePizza();
}else return null;
}
}

出错报告
...全文
461 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dzq584462393 2014-09-28
  • 打赏
  • 举报
回复
子类中Pizza createPizza(String item)这个方法的权限低了,不是类的权限低了
yysx 2014-09-28
  • 打赏
  • 举报
回复
引用 1 楼 rumlee 的回复:
子类重写父类方法时,方法的访问权限必须等于或者大于父类的方法访问权限。 也就是说如果你父类方法用protected修饰,子类则只能用protected和public修饰,不能使用private
可是我的子类没有用private啊,用的是public
yysx 2014-09-28
  • 打赏
  • 举报
回复
可是我的子类没有用private啊,用的是public
rumlee 2014-09-28
  • 打赏
  • 举报
回复
子类重写父类方法时,方法的访问权限必须等于或者大于父类的方法访问权限。 也就是说如果你父类方法用protected修饰,子类则只能用protected和public修饰,不能使用private
  • 打赏
  • 举报
回复
default 就是不加修饰符号
yysx 2014-09-28
  • 打赏
  • 举报
回复
引用 8 楼 u013558123 的回复:
访问权限 有四个修饰符 public protected default private Pizza createPizza(String item){你这里是default
说的很对,我没注意到这里,谢了
  • 打赏
  • 举报
回复
访问权限 有四个修饰符 public protected default private Pizza createPizza(String item){你这里是default
bayougeng 2014-09-28
  • 打赏
  • 举报
回复
你是默认访问限制啊,不是public
zwneo 2014-09-28
  • 打赏
  • 举报
回复
把子类中的createPizza方法的访问控制修饰符改为public
yysx 2014-09-28
  • 打赏
  • 举报
回复
引用 4 楼 dzq584462393 的回复:
子类中Pizza createPizza(String item)这个方法的权限低了,不是类的权限低了
那我要覆盖掉父类的抽象方法createPizza应该怎么做啊

62,614

社区成员

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

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