为了账号安全,请及时绑定邮箱和手机立即绑定

关于访问修饰符的问题 求大神指点~

。。视频中说:

 private:只能在本类中调用;

默认的:只能在同一个包中调用;

protected:只能在同一个包中调用,要是不同包,只能是子类;

public:所有的地方都能用

然后我自己尝试了一下,发现有一下几点疑问:(主要是二级包的问题)

  1. 在二级包中的子类中不能调用public修饰的变量;

  2. 在二级包中的子类不能调用protected修饰的变量;

下面有代码!

正在回答

7 回答

只能在方法块中对成员变量进行修改

0 回复 有任何疑惑可以回复我~

这你要理解if...elseif...else的判断机制,他是当第一个条件不成立时直接进行第二个条件,依次类推,所以你在第二个和后面是不需要多余的条件语句的

rueegoyuezqcgvaaotfzksopeizignnbiluxnvvvchxdavcz

0 回复 有任何疑惑可以回复我~

//二级包中的子类

package com.shiyan2.Second;

//本包中的二级包下的子类中:

import com.shiyan2.C;


public class G extends C {

    public static void main(String[] args){

            C c=new C();

     c.a=1;              

      c.b=2;             

      c.c=3;

      c.d=4;

    }

}

你把调用放到方法里面去,直接在类里面调用是不行的,C可以new出来,C里面的abcd引用不了

1 回复 有任何疑惑可以回复我~
我写了下 public 的 protected的修饰 没报错啊


1 回复 有任何疑惑可以回复我~
#1

wswzh0329 提问者

。。你是复制我的代码吗 还有包的位置也一样?
2015-11-18 回复 有任何疑惑可以回复我~
#2

wswzh0329 提问者

。。最近重装了系统 我自己的源码好像都找不到了
2015-11-18 回复 有任何疑惑可以回复我~

//二级包中的子类

package com.shiyan2.Second;

//本包中的二级包下的子类中:

import com.shiyan2.C;


public class G extends C {

      C c=new C();

      c.a=1;              //这里四个调用都报错  (public)

      c.b=2;             //Syntax error on token "a", VariableDeclaratorId expected after this  token

      c.c=3;

      c.d=4;

}


0 回复 有任何疑惑可以回复我~

package com.shiyan2;

//声明不同修饰符的变量的类

public class C {

    public void print(){

    System.out.println("fulei de fangfa ");

        

   

   

    }

    

    public int a ;

/* 6.在二级包的该类的子类下面不能被调用     

    

*/    

    protected int b;         //总结:只要同包都能调用,并且区别默认的是:它在其他包的子类中也能被调用

/* 3.在其他包的普通类下面不能调用  

 * 5.5.在二级包中的普通类下面不能被调用(其实二级包也算是其他包)

 * 6.在二级包的该类的子类下面不能被调用

    

*/    

    int c;                 //总结:只要同包下都能调用(其中二级包不算同包!)

/* 3.在其他包的普通类下面不能被调用

 * 4.在其他包的该类的子类下不能被调用 

 * 5.5.在二级包中的普通类下面不能被调用(其实二级包也算是其他包)

 * 6.在二级包的该类的子类下面不能被调用

    

*/    

    private int d;         //总结:只有在本类中可以调用!

   /* 1.在同一个包下的其他类中就不能调用

    * 2.在同一个包下的子类中也不能调用(其实子类也算是同一个包下的类)

    * 3.在其他包的普通类下不能被调用

    * 4.在其他包的该类的子类下不能被调用

    * 5.在二级包中的普通类下面不能被调用(其实二级包也算是其他包)

    * 6.在二级包的该类的子类下面不能被调用

    */

    


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       529895    人
  • 解答问题       6086    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

关于访问修饰符的问题 求大神指点~

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信