java吧 关注:1,288,876贴子:12,815,599
  • 16回复贴,共1

紧急求助一下各位大佬;求求高手了。

只看楼主收藏回复

public class hao{
public static void main(String[] args){
Duck k = new ModelDuck("晃晃");
k.fly();
Duck b = new BlackDuck("小黑");
b.fly();
}
}
abstract class Duck{
private String name;
public Duck(String name){
this.name = name;
}
public void fly(){
System.out.print("我叫"+name+"我会飞");
}
}
class BlackDuck extends Duck{
public BlackDuck(String name){
super(name);
}
}
class ModelDuck extends Duck{
public ModelDuck(String name){
super(name);
}
public void fly(){
System.out.println("我叫"+name+"我不会飞");
}
}
我在 ModelDuck 类重写了 fly()方法,可是 name 不能被访问; 但是在BlackDuck 中,却正常;
如果 吧 抽象类Duck中 name 的那个private 删除掉倒是正常运行;可是我跟着学习视频打,代码都一模一样,视频中能够运行, 我这里不行, 想了半个小时。求高手好心,救救我!
报错是:
name可以在Duck中访问private System.out.println("我叫"+name+"我不会飞");


IP属地:广东1楼2018-01-27 16:13回复
    11


    IP属地:广东2楼2018-01-27 16:14
    回复
      2025-11-24 16:47:03
      广告
      不感兴趣
      开通SVIP免广告
      有人吗


      IP属地:广东3楼2018-01-27 16:16
      回复
        就不能截图吗


        IP属地:浙江4楼2018-01-27 16:18
        收起回复




          IP属地:广东5楼2018-01-27 16:19
          回复
            private-私有的 default-默认的 protected-受保护的 public-公有的 把private 换成public 就行了


            来自手机贴吧6楼2018-01-27 16:25
            收起回复
              1


              IP属地:广东8楼2018-01-27 18:52
              回复
                ModelDuck 类中当然不能访问 name 属性了,,,它是私有的只有父类能访问....子类及其它类都不能访问,,如果你删掉private的话它就变成了 default ,也就是默认的,同包下可以访问,子类可以访问(条件必须在一个包下),否则不可以


                IP属地:河南9楼2018-01-27 21:12
                收起回复
                  2025-11-24 16:41:03
                  广告
                  不感兴趣
                  开通SVIP免广告
                  解决了么


                  IP属地:湖南来自Android客户端10楼2018-01-28 13:23
                  回复
                    你可以把Duck里面变成protected,子类就能访问了,否则父类私有的,子类也不能访问


                    11楼2018-01-28 18:16
                    回复
                      既然决定是数据私有,那就写个public访问不就得了(getName()),需要直接调用方法


                      IP属地:湖北12楼2018-09-29 15:40
                      回复