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

来源:7-3 Java 中的访问修饰符

wswzh0329

2015-10-07 11:23

。。视频中说:

 private:只能在本类中调用;

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

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

public:所有的地方都能用

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

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

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

下面有代码!

写回答 关注

5回答

  • 还没想好1995
    2015-11-22 23:21:13
    已采纳

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

  • 大不牛爱撕鸡爷
    2016-04-13 16:15:58

    //二级包中的子类

    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引用不了

  • 学霸君123
    2015-11-14 22:47:47
    我写了下 public 的 protected的修饰 没报错啊


    wswzh0...

    。。最近重装了系统 我自己的源码好像都找不到了

    2015-11-18 15:05:32

    共 2 条回复 >

  • wswzh0329
    2015-10-07 11:27:50

    //二级包中的子类

    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;

    }


  • wswzh0329
    2015-10-07 11:24:40

    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.在二级包的该类的子类下面不能被调用

        */

        


Java入门第二季 升级版

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

530652 学习 · 6091 问题

查看课程

相似问题