java不能覆盖步骤,正在尝试指定更低的访问权限
java不能覆盖方法,正在尝试指定更低的访问权限
哪位大神抽空看一眼,找了半天也没发现错误啊,悲剧……
抽象类
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;
}
}
出错报告

------解决思路----------------------
子类重写父类方法时,方法的访问权限必须等于或者大于父类的方法访问权限。
也就是说如果你父类方法用protected修饰,子类则只能用protected和public修饰,不能使用private
------解决思路----------------------
子类中Pizza createPizza(String item)这个方法的权限低了,不是类的权限低了
------解决思路----------------------
把子类中的createPizza方法的访问控制修饰符改为public
------解决思路----------------------
你是默认访问限制啊,不是public
------解决思路----------------------
访问权限 有四个修饰符 public protected default private
Pizza createPizza(String item){你这里是default
哪位大神抽空看一眼,找了半天也没发现错误啊,悲剧……
抽象类
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;
}
}
出错报告
------解决思路----------------------
子类重写父类方法时,方法的访问权限必须等于或者大于父类的方法访问权限。
也就是说如果你父类方法用protected修饰,子类则只能用protected和public修饰,不能使用private
------解决思路----------------------
子类中Pizza createPizza(String item)这个方法的权限低了,不是类的权限低了
------解决思路----------------------
把子类中的createPizza方法的访问控制修饰符改为public
------解决思路----------------------
你是默认访问限制啊,不是public
------解决思路----------------------
访问权限 有四个修饰符 public protected default private
Pizza createPizza(String item){你这里是default